はじめに

Cocoonのアイキャッチ画像は、通常、投稿タイトルの下に表示されます(図1参照)。
Cocoon設定には、アイキャッチの表示位置を変更する項目がありません。
以下の記事では、テンプレートを直接編集する方法を紹介しています。
そこで、ファイルを直接書き換えない「テンプレートフック」を活用した方法に変更します。
この記事では、この方法について説明します
完成イメージ

実装手順
PHPで実装する場合
以下のコードをfunctions.phpに追加します。
// 元の位置のアイキャッチを削除
add_filter('cocoon_part__tmp/eye-catch', '__return_empty_string');
// 本文前にアイキャッチを追加
add_action('singular_entry_content_before', function () {
get_template_part('tmp/eye-catch');
});
補足
テンプレートの表示位置を変更する際に、フックを用いる典型的なカスタマイズ方法です。
JavaScriptで実装する場合
以下のコードをjavascript.jsに追加します。
jQuery(function ($) {
$('.entry-content').before($('.eye-catch-wrap'));
});
CSSで実装する場合
以下のコードをstyle.cssに追加します。
.article-header {
display: flex;
flex-direction: column;
.entry-title {
order: 1;
}
.sns-share {
order: 2;
}
.date-tags {
order: 3;
}
.read-time {
order: 4;
}
.eye-catch-wrap {
order: 5;
}
}
補足
orderを活用すれば、各項目の順番を自由に変更することが可能です。
| order | 項目 | CSSクラス |
|---|---|---|
| 1 | タイトル | entry-title |
| 2 | アイキャッチ | eye-catch-wrap |
| 3 | SNSシェアボタン | sns-share |
| 4 | 投稿・更新日 | date-tags |
| 5 | 記事を読む時間 | read-time |
さいごに
今回紹介した方法を使えば、テーマのテンプレートファイルを直接変更することなく、本文の上にアイキャッチ画像を表示させることができます。


