サポート » 使い方全般 » カスタム投稿で複数のタームの関連記事を表示したい

  • 解決済 leny0114

    (@leny0114)


    いつもお世話になっています。
    よろしければ知恵をお貸しください。

    下記の通りに設定をしています。
    ・カスタム投稿A
    ・カスタム投稿B
    ・カスタムタクソノミーa(ターム1、ターム2、ターム3…)
    カスタム投稿A、Bともにカスタムタクソノミーaから複数タームを選択しています。

    カスタム投稿Aのシングルページにカスタム投稿Bの同じタームに属するものを取得したいのですが、
    タームが複数ある場合取得が出来ません。
    ソースは下記の通りです。

    <?php
    $term = array_values(get_the_terms($post->ID,'カスタムタクソノミーa'));
    $wp_query = new WP_Query(
    	array( 
    		'post_type' => 'カスタム投稿B',
    		'posts_per_page' => -1,
    		'tax_query' => array(
    		    array(
    			   'taxonomy' => 'カスタムタクソノミーa',
    			   'field' => 'slug',
    			   'terms' => $term->slug,
    			),
    	    ),
    ) ); ?>
    <?php if (have_posts()) : while (have_posts()) : the_post(); ?>
      //ループ処理
    <?php endwhile; endif; wp_reset_query(); ?>

    以上です。

    下記の記事が類似していて、同じような形で試してはみたものの、
    タームがうまく取得できず、2つしか表示されないはずが3つ表示されていたりして困ってしまったので
    別途相談させていただきます。
    [解決済]: 複数タームの関連記事を表示

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

3件の返信を表示中 - 1 - 3件目 (全3件中)
  • array_valuesではなく、配列にスラッグを入れたらどうでしょうか。

    $term = get_the_terms($post->ID,'カスタムタクソノミーa');
    
    $term_arr = array();
    
    foreach ( $terms as $term ) {
    	$term_arr[] = $term->slug;
    }

    それで、'terms' => $term->slug,'terms' => $term_arr,にしたら取得できないでしょうか。

    トピック投稿者 leny0114

    (@leny0114)

    >ikaring様

    お早いご回答をありがとうございます。
    ご指摘の方法で無事に希望通りに動かすことが出来ました。
    重ねて御礼申し上げます。

    良かったです。
    get_the_termsでのエラー時の処理など省いていますので、Codexご参照ください。

    https://wpdocs.osdn.jp/関数リファレンス/get_the_terms

3件の返信を表示中 - 1 - 3件目 (全3件中)
  • トピック「カスタム投稿で複数のタームの関連記事を表示したい」には新たに返信することはできません。