WordPressの公式テーマ Twenty Twenty は、投稿のアイキャッチを、投稿タイトルと本文の間に表示するようになっています。
私は、投稿のアイキャッチを投稿の先頭にも置いていることが多いのですが、そういう人が Twenty Twenty を使うと、同一の画像が連発して出現してしまうアクシデントが多発します。
こんな感じです。
違和感しか有りません。エラーにすら見えます。
私にとってこのアイキャッチは邪魔です。
Twenty Tweny をカスタマイズするために子テーマを作ったことでもありますし、カスタマイズ第一弾として、邪魔なアイキャッチ画像を除去することにしました。
アイキャッチを表示するコードは、content.phpにある
アイキャッチを除去するには、まず、アイキャッチを表示するコードを突き止めなければなりません。
探索作業の結果、 Twenty Twenty でアイキャッチを表示する役割を担っている箇所を見つけました。
それは、 Twenty Twenty/template-parts/content.php にある、次のコードでした。
if ( ! is_search() ) { get_template_part( 'template-parts/featured-image' ); }
これをいじることになりますので、子テーマ内に content.php を作成してカスタマイズします。
作成は次のように行います。
- 子テーマフォルダの直下に template-partsフォルダを作る
- Twenty Twenty/template-parts/ の content.php をコピーして、template-partsフォルダ内にペーストします。
そして、新しく作った content.php をいじって、カスタマイズしていきます。
子テーマフォルダ直下にtemplate-partsを作る
抜粋を表示するコードが、親テーマの content.php にあるとわかりました。
抜粋を非表示にするカスタマイズをするなら、まずは、親テーマの content.php をコピーして、子テーマフォルダ内に貼り付けなければなりません。
ここで一つ注意点があります。 entry-header.php は、子テーマフォルダ直下に貼り付けてはいけません。
content.php は、 Twenty Twenty フォルダ直下ではなく、 Twenty Twenty/template-parts/ フォルダの直下にありました。
content.php を子テーマフォルダ内に貼り付ける作業は、以下のような2段階で行います。
- 子テーマフォルダの直下に template-parts フォルダを作る
- template-parts フォルダの直下に content.php を貼り付ける
コードの解説
content.php の作成が終わったら、いよいよこーど弄りですが、その前に、コードの意味するところを理解しておきましょう。
get_template_part は、別のファイルをインクルードする関数です。
template-partsフォルダのfeatured-image.phpをインクルードすることで、アイキャッチを表示させています。
is_search() は、検索結果ページにはTRUEを返し、それ以外の場合はFALSEを返します。
is_search() の前にある!は否定を表すので、! is_search()は、 検索結果ページにはFALSEを返し、それ以外の場合にはTRUEを返します。
検索結果ページ以外では、投稿タイトルの後にアイキャッチがでてしまう
結局、
if ( ! is_search() ) { get_template_part( 'template-parts/featured-image' ); }
は、
検索結果ページ以外ならば、 template-partsフォルダのfeatured-image.php をインクルードして、アイキャッチ画像を表示しなさい
という命令なんですね。
Twenty Twenty をデフォルトのままで使うと、検索結果ページ以外の…
- 個別投稿ページ
- 固定ページ
- アーカイブページ
- トップページ
などで、投稿や固定ページのタイトル直下にアイキャッチ画像が表示されてしまいます。
個別投稿ページや固定ページで、アイキャッチを表示したくない
私は、アイキャッチを表示するのは、アーカイブページとトップページだけにしたいと考えました。
そこで、デフォルトのコードの
if ( ! is_search() ) { get_template_part( 'template-parts/featured-image' ); }
を、
//タイトル直下に投稿のアイキャッチを表示するのは、アーカイブページとトップページだけにした if (is_home()||is_archive()) { get_template_part( 'template-parts/featured-image' ); }
に、書き換えました。
これによって、
検索結果ページ以外なら、 template-partsフォルダのfeatured-image.php をインクルードして、アイキャッチ画像を表示しなさい
という命令を、
アーカイブページかトップページなら、template-partsフォルダのfeatured-image.php をインクルードして、アイキャッチ画像を表示しなさい
という命令に書き換えたわけです。
これで、投稿タイトル直下にアイキャッチが表示されるのは、アーカイブページまたはトップページだけとなりました。
投稿ページからはアイキャッチがなくなりました。
アーカイブページまたはトップページからもアイキャッチ画像を撤去するなら、次のようにコメントアウトすればいいです。
/***タイトル直下に投稿のアイキャッチを表示するのは、アーカイブページとトップページだけにしたが、結局はそれすらも無効化した。 if (is_home()||is_archive()) { get_template_part( 'template-parts/featured-image' ); }****/
これで、アイキャッチはなくなりましたが、タイトル下に表示されている、投稿の抜粋も私としてはいらないですね。
次はこれを除去したいと思います。