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の取得等に利用されます。

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

本題

上述した通り_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を設定していなかったためエラーで躓きましたし・・・

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

WordCamp Kobe 2011に参加してきました。

9/11に神戸芸術工科大学で開催されたWordCamp Kobe 2011に参加してきました。
今回のWordCampは事前エントリー700人強、参加人数600人弱という国内最大、世界でもサンフランシスコに次ぐ位の規模になったそうです。
神戸芸術工科大学

受付を終えてスポンサーブースではプライム・ストラテジー株式会社さんがWordPressアメを提供していたり、株式会社インターネットイニシアティブさんが「わぷーマグカップ」300個大盤振る舞いしたりしていました。
WordPressアメ
わぷーマグカップ

こちらは場内マップにわぷーを描かれているおでさん

WordCamp本編は午後からだったのですが、午前中はアンカンファレンスでテーマ毎にグループに分かれての討論会があったのでこちらにも参加。
どんどんとテーマが発表されて早々にどれかに参加しないと最後まで残ってしまうという方式だったので私はWordBench福井の森川さん企画の「勉強会について」に参加することに。
10名ほどの少人数でしたがWordPress界隈のあんな人こんな人が、という豪華な面々と共にWordBeachの勉強会についてやプラグインなんかについての議論が繰り広げられ非常に刺激的な内容でした。(私はあまり発言ができず聞いてばかりでしたが・・・)
WordCamp Kobe 2011
Creative Commons License credit: naokomc

WordBench香川でも何かしないといけないけれど、「勉強会」と銘打つと重苦しいからとりあえず県内or四国内でWordPress好きな人や使っている人を集めてどんなことに興味があるか聞いてみたりしてみたいです。

こちらはアンカンファレンスの説明の際の世界のみよしさん確認さんのやり取り?

本編はさすがに来場者も多くなり立見や行列が出来るセッションもあったりして疲れてしまったので、いくつかのセッションを回ったのみでGenius Barで涼みつつゆりこさんが質問に答えてるのを聞いたりマクラケン直子さんのハンズオンに参加してみたりしました。
見れなかったセッションがたくさんあるのでアーカイブ配信に期待。

こちらは大会議室で行われたマクラケン直子さんによる「WordPress の最新事情」の様子。

今回は運良く懇親会にも参加出来たのですが、私が人見知りなせいか、他の方のテンションが高すぎるせいか若干ついていけず・・・
ゆりこさんの飛び込みLT、13歳以上閲覧可の「WPで作るえっちサイト」やスライドに常時写される煽り?のテキストはかなり笑わせて貰いました。

飛び込みLTで次回WordCampが東京開催予定と発表されていたけど金銭的、地理的に参加が難しそうなので次回はUstream視聴での参加となりそうです。

本編LTで森川さんがWordCampならぬWordCrab Fukuiの告知をされていたけど行けるものなら是非参加したいです。香川からだとどうやっていけばいいかも不明ですが・・・
蟹・・・。

今回のWordCamp Kobe 2011は多くの人と出会えて交流ができてとても楽しいイベントでした!
お決まりの言葉になってしまいますけどスタッフ、スピーカー、スポンサー、参加者の皆さんありがとうございました。