WordPress

サムネイル画像(アイキャッチ画像)を再作成してみる:【68日目】WordPress1日1プラグイン

更新日:

ようこそのお運びで、厚く御礼申し上げます。
68日目です。今回はアイキャッチ画像を再作成してみます。

サムネイル画像(アイキャッチ画像)の設定を新しく追加した場合、過去の画像を再作成してみる

サムネイル画像(アイキャッチ画像)をadd_image_sizeで新しく設定した場合、「過去の画像」はそのサムネイル設定が反映されていないので、再構成してみる。

今回のコードについて

今回のコードは、プラグインでサムネイルを扱う場合に使えるかもしれません。
※本当にサムネイルを再作成したいだけなら、有名なプラグインなどをつかったほうがよいです。

今回の仕様

今回は、処理を確認したいだけですがいまいちわかりづらいので、管理画面にボタンを付けて、クリックすると再構成するというものを作ってみます。

  • 管理画面に「サムネイル再構成」メニュー追加
  • 上記のページに「サムネイル再構成する」ボタンをつける
  • クリックすると、「すべての画像」を取得する
  • そして再構成(再作成)を行います。

「設定」下にメニューを作ります。

140328-0002

ボタンを配置して、クリックすると処理が行われます
140328-0001

最初に、サムネイルの設定を追加

当たり前ですが、これをしないと再構成する意味はないですよね。
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;
  }

パスや画像情報を取得し、画像を再構成する。

     $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」ディレクトリに入れ、管理画面で有効にして完了です。

今回のまとめ

今回は画像処理をしてみたいとおもい、まずは基本かなーと思った「サムネイル再作成」を行ってみました。今回、画像のパスや再構成の仕方が理解できたので、もうちょっと何かしてみたいけど、・・・調べるのに時間がかかりますね。でも、画像処理はやっぱり面白い。

-WordPress
-, , , ,

Copyright© アルパカ@ラボ , 2019 All Rights Reserved Powered by AFFINGER5.