Nov 11, 2013

ブログを美しく見せる最も手っ取り早い手段がアイキャッチ画像だと思います。まさに、記事毎に表示されている ⇧⇧⇧ この上の画像ですね。

アイキャッチとは、その名の通りコンテンツの内容を端的なイメージで訴求するためのもの。記事への興味を持ってもらうために必須と言えますが、毎回フォトレタッチソフトで画像を整形するのはかなり面倒です。僕の場合はかつて更新が滞った一因にもなりました。

そこで! アイキャッチ用にアップした画像を自動で切り抜いたりリサイズする方法をご紹介します。Auto Post Thumbnailなどのプラグインを利用したりテンプレートファイルに直接記述する方法を多く見掛けますが、僕個人のポリシーで可能な限りfunctions.phpからコントロールする方法を推奨しています。


functions.phpに以下のコードを追加

functions.phpはテーマディレクトリの直下にあるファイルで、テーマによってはfunction.phpだったりします。直接ファイルを編集してFTPでアップロードするか、管理画面の「外観」⇒「テーマ編集」⇒「テーマのための関数」を編集します。いずれにしてもバックアップはしっかりと。

  • アイキャッチ機能を使用可能にする設定
  • // アイキャッチ画像を使えるようにする
    add_theme_support( 'post-thumbnails' );
    
    WordPress管理画面の投稿/固定ページでアイキャッチ画像を設定するためのコードです。



  • 切り抜きの場合
  • // アイキャッチ画像の表示の仕方を指定(切り抜き)
    set_post_thumbnail_size(520, 220, true );
    
    そして表示サイズを指定するコード。数字はそれぞれ画像の横幅と縦幅なので自由に設定してください。trueは画像を切り抜きたい場合に記述します。上記の例では、アップロードした元画像のサイズを640×480とすると、そのままの比率(4:3)で520×390に縮小してから天地の余剰部分をカットして520×220にする作業を自動で行うわけです。

  • リサイズの場合
  • // アイキャッチ画像の表示の仕方を指定(リサイズ)
    set_post_thumbnail_size(520, 220 );
    
    trueを記述しない場合は自動リサイズになります。縦横比を保ったまま縮小されなので、たとえば縦横1:1に指定すると足りない部分が生じます。


    実例を挙げるとこんな感じですね。当サイトでは各記事のアイキャッチを520×220、新着記事のサムネイルを50×50でいずれも切り抜きモードに設定しています。

    表示したいテンプレートファイルに以下のテンプレートタグを追加

    <?php the_post_thumbnail();?>
    

    以下はこのサイトにおける記述例です。index.phpとsingle.phpに上記のタグを追加しています。
    <div class="post">
    	<div class="cal"><?php echo get_post_time('M j, Y'); ?></div>
    	<?php the_post_thumbnail(); ?>
    	<div class="entry">
    	<div class="title">
    		<ul>
    		<li class="cat"><?php the_category(', ') ?></li>
    		<li class="tag"><?php the_tags('', ', '); ?></li>
    		</ul>
    		<h2 class="entry_title">
    		<a href="<?php the_permalink() ?>" title="<?php the_title_attribute(); ?>">
    		<?php the_title(); ?></a>
    		</h2>
    	</div>
    	<span class="goog_qs-tidbit goog_qs-tidbit-0"><?php the_content('続きを読む'); ?>
    	</div>
    </div>
    
    挿入する場所はデザインに合わせて任意で。あとでスタイルシートで微調整もできます。これで一旦は完了です。

    ついでにアイキャッチが無い場合の代替画像を指定

    いくら簡単にアイキャッチを表示できるようになったとはいえ、それでも記事内容によってはマッチする画像を見つけてくること自体が難しかったりします。

    でも当サイトの場合はデフォでアイキャッチが必要なサイトデザインなので、画像が用意できないときに予め設定しておいた代替画像を表示させるようにしました。そのために以下のコードを同じくfunctions.phpに追加で記述しています。

    // アイキャッチ画像が無い場合の代替画像を指定
    add_action( 'save_post', 'save_default_thumbnail' );
    function save_default_thumbnail( $post_id ) {
    	$post_thumbnail = get_post_meta( $post_id, $key = '_thumbnail_id', $single = true );
    	if ( !wp_is_post_revision( $post_id ) ) {
    		if ( empty( $post_thumbnail ) ) {
    			update_post_meta( $post_id, $meta_key = '_thumbnail_id', $meta_value = '23' );
    		}
    	}
    }
    
    ハイライト中にある「23」の数字、これは代替画像用にアップロードした画像URLのIDです。IDの調べ方は以下のURLにて。英語ですが問題なく理解できると思います。

    Quick Tip: Saving a Default Post Thumbnail | Wptuts+

    なお、この代替画像を表示する方法は以下のエントリを参考にしました。いつもいつもお世話になっております。

    WordPressのアイキャッチ画像に任意のデフォルト画像を登録する方法 – かちびと.net

    代替画像をカテゴリ別に設定する

    すいません、分からないなりに頑張りましたがやっぱり分かりませんでした。惜しいところまではいったんですが…どなたか詳しい方よろしくお願いします。

    これなんて凄くイメージに近いんですよね。
    【WordPress】 TwentyTwelveでカテゴリ別のアイキャッチ画像を表示する | work.log

    

    Comment

    1. 774 says:

      「to top↑」の画像がすごく邪魔です…(/o\)
      めっちゃ邪魔…笑
      もったいないので通りすがりの774から進言でした。

      • jay says:

        ご指摘有難うございますw

        ネタとしても古いので手が空いたら
        邪魔にならない小さい画像に差し替えます。

    Leave a Reply

    メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

    サイト内検索
    • Author

    • Twitter

      Follow @jay0926 (534 followers)
    • Facebook