やったこと

webサービスを作るときに考えたことを垂れ流します

simplicityのテーマで特定の記事だけアイキャッチ画像の自動表示を無効にする

ワードプレス「simplicity」のテーマで、投稿記事の文章始めに自動的にアイキャッチ画像を挿入できる設定がある。

設定方法:
「外観」→「カスタマイズ」→「レイアウト(投稿・固定ページ)」→「本文先頭にアイキャッチ画像を表示」

この機能は手間が省けて便利なんだけど、でも特定の記事でだけこの機能を無効にしたいときにちょっと困ってしまう。上記の設定はブログの全記事にたいして有効になってるので、設定をオフにすると今まで書いたブログの記事から全部画像が消えてしまうことになるんだよね・・。

特定の記事にだけ画像表示機能を無効にするには、以下のような方法でいけました。

①「function.phpを修正する」
function.phpに以下のような関数を追記します。画像表示機能を無効にする記事を指定する関数です。

//特定記事のアイキャッチを無効にする
function hide_this_eyecatch(){
  global $post;
  $visible = true;

  if ($post->ID == '123'){
    $visible = false;
  }
  return $visible;
}


コード中の'123'は画像表示機能を無効にしたい記事の「記事ID」を表します。「記事ID」の調べ方は・・・ググッて調べてみてください!

ちなにみある記事以降の画像表示機能を全て無効にしたい場合は以下のようにします。

//特定記事のアイキャッチを無効にする
function hide_this_eyecatch(){
  global $post;
  $visible = true;

  if ($post->ID >= 123){
    $visible = false;
  }
  return $visible;
}

これで「記事ID:123」以降に投稿した記事は全てアイキャチ画像が挿入されなくなります。

②「entry-body.phpを修正する」
entry-body.phpの45行目くらいにあるコードを以下のように修正します。上記で指定した記事の画像の挿入を無効にしています。

<?php if ( has_post_thumbnail() && is_eye_catch_visible() && hide_this_eyecatch()): // サムネイルを持っているときの処理 ?>
  <div class="eye-catch"><?php the_post_thumbnail('large'); ?></div>
<?php endif; ?>


以上です

あまりコードをいじりたくはなかったんだけど、この方法しか思いつかなかった・・。もっと良いやり方はないのかしら・・。