ようこそのお運びで、厚く御礼申し上げます。
68日目です。今回はアイキャッチ画像を再作成してみます。
サムネイル画像(アイキャッチ画像)の設定を新しく追加した場合、過去の画像を再作成してみる
サムネイル画像(アイキャッチ画像)をadd_image_sizeで新しく設定した場合、「過去の画像」はそのサムネイル設定が反映されていないので、再構成してみる。
今回のコードについて
今回のコードは、プラグインでサムネイルを扱う場合に使えるかもしれません。
※本当にサムネイルを再作成したいだけなら、有名なプラグインなどをつかったほうがよいです。
今回の仕様
今回は、処理を確認したいだけですがいまいちわかりづらいので、管理画面にボタンを付けて、クリックすると再構成するというものを作ってみます。
- 管理画面に「サムネイル再構成」メニュー追加
- 上記のページに「サムネイル再構成する」ボタンをつける
- クリックすると、「すべての画像」を取得する
- そして再構成(再作成)を行います。
「設定」下にメニューを作ります。
ボタンを配置して、クリックすると処理が行われます
最初に、サムネイルの設定を追加
当たり前ですが、これをしないと再構成する意味はないですよね。
functions.phpやプラグインファイルに書き込みます。
//####################### //サムネイルを有効にして、新しくサイズも追加する //####################### if (function_exists('add_theme_support')) { add_theme_support('post-thumbnails'); add_image_size( 'paka3img', 300, 300); }
テンプレートファイルに出力するときは
<?php the_post_thumbnail('paka3img'); ?>
や、その他、このような出力方法もあります。
echo wp_get_attachment_image(画像ID, 'paka3', null, Array('title' => '***', 'alt' => '**'));
コードの構成を確認。
まずは、処理のポイントを書いていきます。
functions.phpにそのまま書いても動きますので、まずはそちらに書いてみても良いです。
管理メニューについては省略します。以下のリンクを確認してください。
すべての画像のID等の取得
すべての画像の情報はget_childrenを用いて取得します。
WordPress Codex 日本語版:get_children
//###################### //画像を全部取得 //###################### function imageAllList(){ $images = get_children(array( 'post_parent' => "", //ID指定なし 'posts_per_page' => -1, //数の設定なし 'post_type' => 'attachment', 'post_mime_type' => 'image', 'order' => 'ASC')); return $images; }
パスや画像情報を取得し、画像を再構成する。
- すべての画像のデータをforeachでまわします
- get_attached_fileで指定した画像IDのファイルパスを取得します
- wp_generate_attachment_metadataで画像添付ファイルのメタデータを生成します。
(参照:WordPress Codex :wp_generate_attachment_metadata) - wp_update_attachment_metadataで画像ファイルを再作成します。
(参照:WordPress Codex :wp_update_attachment_metadata)
$images=$this->imageAllList(); foreach($images as $akey=>$img){ $imgPath = get_attached_file( $img->ID ); $metadata = wp_generate_attachment_metadata( $img->ID , $imgPath ); if (!empty( $metadata ) && ! is_wp_error( $metadata ) ) { wp_update_attachment_metadata( $img->ID , $metadata ); } }
※「undefined function wp_generate_attachment_metadata()」エラーが出た場合
wp_generate_attachment_metadataが動かなかったので、調べてみると
require ( ABSPATH . 'wp-admin/includes/image.php' );
とすれば動くみたいです。
コードをプラグイン用のファイルにします
それではfunction.phpに書いたコードを消して、
「Paka3ReImg.php」というファイルを作成し、以下のコードを記入します。
このファイルを[wp-content]>「plugins」ディレクトリに入れ、管理画面で有効にして完了です。
今回のまとめ
今回は画像処理をしてみたいとおもい、まずは基本かなーと思った「サムネイル再作成」を行ってみました。今回、画像のパスや再構成の仕方が理解できたので、もうちょっと何かしてみたいけど、・・・調べるのに時間がかかりますね。でも、画像処理はやっぱり面白い。