サポート » 使い方全般 » 関連記事の表示方法について

  • 解決済 Style0521

    (@style0521)


    関連記事の表示方法についてお教えいただきたく。

    ある投稿に付随するカテゴリもしくはタグの関連記事を表示させたいのですが、方法がわかりません。

    $tags = wp_get_post_tags($post -> ID);
    $tagIDs = array();
    if ($tags):
    $tagcount = count($tags);
    for ($i = 0; $i < $tagcount; $i++) {
    $tagIDs[$i] = $tags[$i]->term_id;
    }
    endif;

    $category = get_the_category($post -> ID);
    $categoryIDs = array();
    if ($category):
    $categorycount = count($category);
    for ($i = 0; $i < $categorycount; $i++) {
    $categoryIDs[$i] = $category[$i]->cat_ID;
    }
    endif;

    $args = array(
    ‘relation’ => ‘OR’,
    ‘post__not_in’ => array( $post -> ID ),
    ‘tag__in’ => $tagIDs,
    ‘category__in’ => $categoryIDs,
    ‘posts_per_page’ => 3,
    ‘orderby’ => ‘date’
    );
    $related_query = new WP_Query($args);

    上記のようにサブループを作ると、
    現在表示されている投稿のカテゴリとタグの両方に一致するものが取れてしまうようでうまくいきません。

    ご教授いただけますと幸いです。

    よろしくお願いいたします。

4件の返信を表示中 - 1 - 4件目 (全4件中)
  • モデレーター gatespace

    (@gatespace)

    ※コードを投稿する時はその部分を「code」ボタンで囲ってください。

    tag__in、category__in パラメーターはそれぞれ指定されたタグ、カテゴリーを含む投稿を検索するのですが、両方指定することで AND になっている様です。

    通常のカテゴリーもタグも元をたどれば「タクソノミー」なので、WP_Queryのパラメーターを工夫すれば良いような気がします。
    (あと relation の場所も間違ってます)

    Codex:WP_Query

    ※未検証ですが、

    $args = array(
        'post__not_in' => array( $post->ID ), // この投稿は含めない。$post->IDはループ内なら get_the_ID() でもOK
        'posts_per_page' => 3, // 投稿数
        // 'orderby' => 'date' デフォルトで日付順になるのでいらない
        'tax_query' => array(
            'relation' => 'OR',
            array(
                'taxonomy' => 'category', // カテゴリー
                'field' => 'id', // タームの指定を何でするか ('id' or 'slug')
                'terms' => $categoryIDs, // 指定できるのは int/string/array いずれか
                'include_children' => false, // 子カテゴリーは含めない(デフォルトは含めるで true)
                'operator' => 'IN',
            ),
            array(
                'taxonomy' => 'post_tag', // タグ
                'field' => 'id',
                'terms' => $tagIDs,
                'operator' => 'IN'
            )
        )
    );
    $related_query = new WP_Query($args);

    トピック投稿者 Style0521

    (@style0521)

    gatespace世話役さま

    書き込みありがとうございました。

    いただきましたもので抽出できたようです。

    質問させていただきたいのですが、

    デフォルトにある投稿タイプ「post」にあるカテゴリやタグのtaxonomyが
    「category」や「post_tag」ということなのでしょうか?

    カスタムタクソノミーで自分で指定したものは、名称がわかるのですが、
    デフォルトのものはよくわからず・・・。

    どうぞよろしくお願いいたします。

    モデレーター gatespace

    (@gatespace)

    トピック投稿者 Style0521

    (@style0521)

    お返事が遅くなりまして申し訳ありません。

    いろいろありがとうございました。

    とても参考になりました。

    全然わからないことだらけでして。

    今後ともよろしくお願いいたします。

4件の返信を表示中 - 1 - 4件目 (全4件中)
  • トピック「関連記事の表示方法について」には新たに返信することはできません。