WordPressのサムネイル再生成プラグイン – Regenerate Thumbnails

WordPressでサーバへの負荷軽減の為にフルサイズ画像のみ生成するように設定していたのですがサムネイル画像を使用する必要が出てきたのでサムネイル画像再生成の方法についてシェアしたいと思います。

前置き

WordPressのデフォルトのメディアの設定は以下の通りになっておりサムネイル、中サイズ、大サイズ、フルサイズが生成され “wp-content/uploads/YYYY/MM/”に格納されます。

またこの値を全て0にすることでフルサイズのみ生成することも可能です。

この時データベースの wp_postmeta > _wp_attachment_metadata に次のように画像のサイズやそれに対するファイル名、Exif情報等が格納されます。当然メディア設定でフルサイズのみを生成した場合には、thumbnail、medium等の情報はなくなります。

a:6:{s:5:"width";s:3:"584";s:6:"height";s:3:"438";s:14:"hwstring_small";s:23:"height='96' width='128'";s:4:"file";s:13:"wckobe-01.jpg";s:5:"sizes";a:5:{s:9:"thumbnail";a:3:{s:4:"file";s:21:"wckobe-01-150x150.jpg";s:5:"width";s:3:"150";s:6:"height";s:3:"150";}s:6:"medium";a:3:{s:4:"file";s:21:"wckobe-01-300x225.jpg";s:5:"width";s:3:"300";s:6:"height";s:3:"225";}s:14:"post-thumbnail";a:3:{s:4:"file";s:21:"wckobe-01-584x288.jpg";s:5:"width";s:3:"584";s:6:"height";s:3:"288";}s:13:"large-feature";a:3:{s:4:"file";s:21:"wckobe-01-584x288.jpg";s:5:"width";s:3:"584";s:6:"height";s:3:"288";}s:13:"small-feature";a:3:{s:4:"file";s:21:"wckobe-01-400x300.jpg";s:5:"width";s:3:"400";s:6:"height";s:3:"300";}}s:10:"image_meta";a:10:{s:8:"aperture";s:1:"0";s:6:"credit";s:0:"";s:6:"camera";s:0:"";s:7:"caption";s:0:"";s:17:"created_timestamp";s:1:"0";s:9:"copyright";s:0:"";s:12:"focal_length";s:1:"0";s:3:"iso";s:1:"0";s:13:"shutter_speed";s:1:"0";s:5:"title";s:0:"";}}

ここに格納されたデータの使用例としては以下のようにwp_get_attachment_image_srcでサイズを指定した時の画像URLの取得等に利用されます。

<br />
&lt;?php<br />
$attachment_id = 1;<br />
$image = wp_get_attachment_image_src( $attachment_id, 'thumbnail' );<br />
?&gt;<br />
&lt;img src=&quot;&lt;?php echo $image[0]; ?&gt; width=&quot;&lt;?php echo $image[1]; /&gt; height=&quot;&lt;?php echo $image[2]; ?&gt; /&gt;<br />

本題

上述した通り_wp_attachment_metadataの情報は画像をアップロードした時点で設定されるため、初期のメディア設定でフルサイズのみを生成する、としてあとからサムネイル画像を使用したいとなっても当然サムネイル画像URLは取得できず、フルサイズ画像のURLが取得されてしまいます。

そこでRegenerate Thumbnailsプラグインを用いてサムネイル画像再生成及び_wp_attachment_metadata情報更新を行いたいと思います。
Regenerate Thumbnails

使い方は以下の通り。

  1. Regenerate Thumbnailsプラグインをインストール、有効化。
  2. 設定 > メディア で画像サイズを再設定。
  3. ツール > Regen. Thumbnails でRegenerate All Thumbnailsを押下。
  4. 再生成中・・・

wp-content/uploads/フォルダを見てみるとメディア設定で指定したサイズの画像が再生成されていると思います。
また、_wp_attachment_metadataの情報も更新されています。

エックスサーバー、シックスコアのPHPバージョンアップで躓いたメモ

WordPress3.2系からサーバ要件としてPHP5.2.4以上が必要となりました。
サーバの用意 – WordPress Codex 日本語版

運用しているエックスサーバー,シックスコア(以下エックスサーバー系)では2011/09/20現在PHPバージョンは以下の通り

  • PHP4.3.9(非推奨)
  • PHP5.1.6(推奨)
  • PHP5.2.14
  • PHP5.3.3

これまで5.1.6を利用していたものをWordPressバージョンアップに合わせて5.3.3にアップグレードすることにしました。
その際、WordPress、オリジナルプログラムでPHPのエラーが発生したので解決方法をシェアしたいと思います。

PHPをバージョンアップ後もWordPressのバージョン未対応警告が表示される

コントロールパネルでPHP5.3.3に変更したにも関わらず以下のような警告が表示されてしまいます。

サーバーの PHP バージョンは 5.1.6 ですが WordPress 3.2.1 は 5.2.4 以上のみでご利用になれます。

原因としてはエックスサーバー系では.htaccessのAddHandlerで以下記述をしないとPHP4.3.9として認識されるらしく、今回は”AddHandler x-httpd-php5 .php”としていた為、PHP5.1.6として認識されていたようです。
PHP5.3.3用の記述により正常にWordPressが表示されるようになりました。

PHP4.3.9
.htaccessに記述必要なし
PHP5.1.6
AddHandler x-httpd-php5 .php
PHP5.2.14
AddHandler x-httpd-php5.2 .php
PHP5.3.3
AddHandler x-httpd-php5.3 .php

以前PHP5.1.6でWordPressをインストールした際も.htaccessにAddHandlerで指定していなかったのでPHP4.3.9と誤認識されて躓いた記憶があります・・・

PEARモジュールが読み込まれない

require_once 'PEAR.php';

自作プログラムでPHP5.1.6までは標準でインストールされているPEARの読み込みが上記で動作していたのですが5.3.3にバージョンアップ後は以下のエラーが出て読み込まれていないようでした。

Warning: require_once(PEAR.php) [function.require-once]: failed to open stream: No such file or directory in /hoge/hoge.php on line 2

Fatal error: require_once() [function.require]: Failed opening required 'PEAR.php' (include_path='.:') in /hoge/hoge.php on line 2

PEARへのパスが通っていないのは分かったのですがマニュアルやよくある質問を検索してみてもそれらしい解決方法は見つからずgoogle先生に頼ることに。
Xserver の便利なphp.ini のカスタマイズ – Mottys Web page!より解決方法が見つかりました。

php.iniに以下を記述することでPEARへのパスを通すことができました。

include_path = ".:/usr/share/pear5.3"

エックスサーバー系はどうもPHPバージョン変更に対するphp.iniへのサポートがいまいちなのか、エックスサーバではバージョン切り替えページに以下の注意書きがあったのですがシックスコアではありませんでした。

■お客様側で個別にphp.iniを設置されている場合のご注意
 【PHP5.2.x】【PHP5.3.x】では php.ini 未設定項目の値は
 php4/php5.1とは異なる値となる場合があります。

特にお客様側で個別に設置されているphp.iniにて、
 「sendmail_path」や「date.timezone」が未設定の場合、
 プログラムが正常に動作しなくなる可能性があります。
 上記現象を回避するには、事前に php.ini に設定値を追記する必要があります。

※「sendmail_path」と「date.timezone」のデフォルトのphp.ini設定値は以下になります。
 —————————————-
 sendmail_path = /usr/sbin/sendmail -t -i
 date.timezone = “Asia/Tokyo”
 —————————————-

案の定シックスコアでdate.timezoneを設定していなかったためエラーで躓きましたし・・・

エックスサーバ系は管理画面もわかりやすくてバージョンアップ対応なんかも迅速なのでよく利用させて頂いているので、マニュアルをもう少し充実させて頂ければと思います。

かがわSOHO会[2011年9月度]に参加してきました。

スタイルデザインさん主催の「かがわSOHO会 in umie 11/09/16(19:00-24:00)」に参加してきました。
(ナンバリングされてないからタイトルが毎回同じになってしまいますね。どうしましょうか。)

かがわSOHO会という名前ですがSOHOに限らず会社勤め、学生等肩書関係無く、Web関連の話題を中心に(参加者にWeb関係者が多い為)ゆるゆる話しつつごはんを食べましょう、というイベントです。(意訳)
かがわSOHO会について

当日は台風接近ということもあり集まり具合が心配されましたが7名の参加。参加者層はやはりWeb関連が多め。
特にテーマを決めて、という集まりではないのでその場その場で話題を変えつつ、私の周りでは次のような話題に。

  • わぷーステッカー配布、わぷーかわいいよわぷー
  • MacBook Airが素晴らしい
  • WordBeach、WordCampに参加してきました
  • WordPress Twenty Elevenテーマについて
  • WordBench香川を再開しなくては!!
  • イタリア楽しい。食べ物おいしいけど、基本的には日本の方がおいしい
  • ITスクエアとかコワーキングとか仕事環境について
  • 香川県内あれこれ(ことちゃん、萌えうどん、etc…)
  • スマホ実演いろいろ

WordBeach、WordCamp参加直後だった為、WordPressやイベント・勉強会についての話題が多めに。そして勉強会用にノートPC必要だなーと思っていたところにMacBook Air使いの方にその素晴らしさを語られたので来週あたりにはポチってしまうかも・・・

というようなWebに限らずローカルネタ、雑談ありのゆるい集まりですので興味を持たれた方は参加してみてはいかがでしょうか。

* * *

雨が降っていたからカメラ持っていかずiPod touchで撮影したけどあまりにひどかったのでアイキャッチ画像写真はFlickrよりお借りしました。(Creative Commons License credit: saitowitz