閉じる

WordPressでオリジナルテーマ作成!カスタム投稿で関連記事を作るコード紹介。

カスタム投稿で関連記事を作りたい!その時に使える関連記事作成のコードです。

※自作じゃなくプラグインでやる場合は、jetpackを使うのが一番簡単だと思います。

目次 [ close ]

コード

作成したタクソノミーで関連記事を作る 記事に設定しているタクソノミーが1つの場合

今回の関連記事は表示されている投稿と同じタクソノミー(カテゴリー)を選択されている記事を呼び出すコードになります。

[swpm_protected custom_msg=’ここから先の閲覧にはログインが必要です。ナレッジの会員登録がまだの方はナレッジについてをご確認くださいませ。’]

<?php
$singlepostterms = get_the_terms($post->ID, 'newsgenre'); //タクソノミーを指定
foreach ($singlepostterms as $singlepostterm) {
    $singlepost_singlepostterm =  $singlepostterm->slug; //開いている記事のターム(スラッグ)を取得
}
$the_query = new WP_Query(array(
    'post_status' => 'publish',
    'post_type' => 'news',//カスタム投稿スラッグ
    'posts_per_page' => 4,
    remove_all_filters('posts_orderby'), //Post Types Orderのプラグインを使用する場合は新着順になるのでランダム表示するなら必要
    'orderby' => 'rand', //ランダム表示 orderとは違うので注意
    'tax_query' => array(
        array(
            'taxonomy' =>  'newsgenre', //タクソノミー名
            'field' => 'slug',
            'terms' => $singlepost_singlepostterm, //開いた記事のスラッグが出力されるようにする
        ),
    ),
));
if ($the_query->have_posts()) : ?><?php while ($the_query->have_posts()) : $the_query->the_post(); ?>
コンテンツ
<?php endwhile; ?><?php endif; ?>

作成したタクソノミーで関連記事を作る 記事に設定しているタクソノミーが2つ以上の場合

記事にタクソノミーが2つ以上設定している場合のコード。

例えば、記事に「news」「blog」のように、2つタクソノミーを設定している場合なども結構あるかと思います。その時は、「news」と「blog」が設定している他の記事を関連記事として表示したい!という時に使用。

コードはほとんど1つの時と同じですが、下記のとおり[ ] が必要です。これはタクソノミーが複数系になる為です。

<?php
$singlepostterms = get_the_terms($post->ID, 'newsgenre'); //タクソノミーを指定
foreach ($singlepostterms as $singlepostterm) {
    $singlepost_singlepostterm[] =  $singlepostterm->slug; //開いている記事のターム(スラッグ)を取得
}
$the_query = new WP_Query(array(
    'post_status' => 'publish',
    'post_type' => 'news',//カスタム投稿スラッグ
    'posts_per_page' => 4,
    remove_all_filters('posts_orderby'), //Post Types Orderのプラグインを使用する場合は新着順になるのでランダム表示するなら必要
    'orderby' => 'rand', //ランダム表示 orderとは違うので注意
    'tax_query' => array(
        array(
            'taxonomy' =>  'newsgenre', //タクソノミー名
            'field' => 'slug',
            'terms' => $singlepost_singlepostterm, //開いた記事のスラッグが出力されるようにする
        ),
    ),
));
if ($the_query->have_posts()) : ?><?php while ($the_query->have_posts()) : $the_query->the_post(); ?>
コンテンツ
<?php endwhile; ?><?php endif; ?>

[/swpm_protected]

CONTACT

お問い合わせはエールクエスト公式サイトよりお願いいたします。