他の Jetpack モジュールと同様に、関連記事モジュールには必要に応じて表示方法をカスタマイズするためのフィルターが存在します。
以下に示すコードスニペットは、モジュールに含まれるフィルターの例です。これらを functionality プラグインまたはご使用のテーマの functions.php ファイルに追加することができます。
さらにフィルターが必要な場合は、Jetpack のソースコードを参照することもできます。
- 投稿の下に表示される関連記事の数を変更する
- 関連記事を投稿内容の上に移動させる
- ショートコードを使って関連記事を投稿コンテンツ内に挿入する
- 投稿の下から関連記事を削除する
- 関連記事セクション上部の「関連記事」というタイトルを変更する
- 関連記事の1つを特定の記事と入れ替えて表示させる
- 特定の記事を関連記事として表示しないようにする
- カテゴリー全体を関連記事として表示しないようにする
- 選択した記事上で関連記事を表示しないようにする
投稿の下に表示される関連記事の数を変更する
デフォルトでは、関連記事のセクションには最多で3つの記事が表示されます。以下の jetpack_relatedposts_filter_options
フィルターを使ってこの数を変更することができます。
function jetpackme_more_related_posts( $options ) { $options['size'] = 6; return $options; } add_filter( 'jetpack_relatedposts_filter_options', 'jetpackme_more_related_posts' );
関連記事を投稿内容の上に移動させる
デフォルトでは、関連記事のセクションは投稿の最後に表示されます。以下の jetpack_relatedposts_filter_options
フィルターを使って投稿内容の上に表示することができます。
function jetpackme_move_related_posts_to_top( $options ) { $options['show_above_content'] = true; return $options; } add_filter( 'jetpack_relatedposts_filter_options', 'jetpackme_move_related_posts_to_top' );
ショートコードを使って関連記事を投稿コンテンツ内に挿入する
[jetpack-related-posts]
ショートコードを使って投稿コンテンツ内のお好きな位置に関連記事を挿入できます。ショートコードを挿入した場合、投稿の下には関連記事は表示されません。
投稿の下から関連記事を削除する
以下のコードをテーマの functions.php または functionality プラグインに追加することで関連記事を投稿から削除できます。
function jetpackme_remove_rp() { $jprp = Jetpack_RelatedPosts::init(); $callback = array( $jprp, 'filter_add_target_to_dom' ); remove_filter( 'the_content', $callback, 40 ); } add_filter( 'wp', 'jetpackme_remove_rp', 20 );
その後、投稿内で上記のショートコードを使うか do_shortcode()
でテンプレートページに直接ショートコードを含めることで関連記事をお好きな位置に追加できます。テンプレートの関連記事を表示したい位置に含めるコードは以下のとおりです。
<?php echo do_shortcode( '[jetpack-related-posts]' ); ?>
関連記事セクション上部の「関連記事」というタイトルを変更する
この例では、デフォルトの「関連記事」というタイトルを「こちらもご覧ください」に変更できます。
function jetpackme_related_posts_headline( $headline ) { $headline = sprintf( '<h3 class="jp-relatedposts-headline"><em>%s</em></h3>', esc_html( 'こちらもご覧ください' ) ); return $headline; } add_filter( 'jetpack_relatedposts_filter_headline', 'jetpackme_related_posts_headline' );
関連記事の1つを特定の記事と入れ替えて表示させる
以下の例では、 ID 1036
を関連記事の最初に表示するため ‘hits’ の配列にフィルターをかけています。
function jetpackme_append_related_post( $hits, $post_id ) { // $post_id は現在関連記事を取得している元の投稿 // hits 配列の最初に1036を追加 array_unshift( $hits, array( 'id' => 1036 ) ); return $hits; } add_filter( 'jetpack_relatedposts_filter_hits', 'jetpackme_append_related_post' );
特定の記事を関連記事として表示しないようにする
以下の例では 1037
および 1038
が表示しない記事の ID です。
function jetpackme_exclude_related_post( $exclude_post_ids, $post_id ) { // $post_id は現在関連記事を取得している元の投稿 $exclude_post_ids[] = 1037; // post_id 1037 を除外 $exclude_post_ids[] = 1038; // post_id 1038 も除外 return $exclude_post_ids; } add_filter( 'jetpack_relatedposts_filter_exclude_post_ids', 'jetpackme_exclude_related_post' );
カテゴリー全体を関連記事として表示しないようにする
“Dogs” というカテゴリー内の投稿を関連記事としてまったく表示されないようにしたい場合、以下のように指定します。
function jetpackme_filter_exclude_category( $filters ) { $filters[] = array( 'not' => array( 'term' => array( 'category.slug' => 'dogs' ) ) ); return $filters; } add_filter( 'jetpack_relatedposts_filter_filters', 'jetpackme_filter_exclude_category' );
選択した投稿のみで関連記事を表示しないようにする
関連記事を表示したくない投稿がある場合は、このコードをベースに利用してください。
function jetpackme_no_related_posts( $options ) { if ( is_single( array( 17, 19, 1, 11 ) ) ) { $options['enabled'] = false; } return $options; } add_filter( 'jetpack_relatedposts_filter_options', 'jetpackme_no_related_posts' );
is_single
の代わりにもさまざまな条件タグを使用できます。上の例では17、18、1、11が関連記事を表示しない記事の ID です。この設定を行っても、これらの投稿は他の投稿の個別ページで関連記事として表示されます。
関連記事モジュールについて他にも不明な点がある場合は、遠慮なくご連絡ください。