質問: get_posts( $args ); if( !empty( $myposts ) ) : foreach ( $myposts as $post ) : setup_postdata( $post ); ?> 無い場合は何も表示しない ``` カテゴリの箇所に変数を入れたところカスタム投稿が全て表示されました。 変数をカテゴリスラッグに変えても同様にすべて表示されます。 IDを入れたところ、逆に何も表示されなくなりました。 この現象から、コード自体が間違っておりカスタム投稿のカテゴリ分岐自体が出来ていないのではないかと思うのですが、どこをどう間違っているのか分かりません。 何度も申し訳ないのですが、お分かりになられる方お教えください。 よろしくお願いいたします。
回答: 投稿ページ(single.php)のカスタムフィールドの値を使用するなら、 ここの ``` $custom_field= get_post_meta($post_id, 'カスタムフィールド名', true ); ``` $post_id は get_the_ID() にする必要があると思います。 で、 ``` 'category'=>$custom_field ``` の $custom_field の値はカテゴリー ID を指定する必要があります。 テンプレートタグ/get posts 追記 カスタム投稿に設定されたのは、カテゴリーではなくタクソノミーといわれるものです。 $myposts の前2行を以下のコードに、 ``` $custom_field = get_post_meta(get_the_ID(), 'カスタムフィールド名', true ); $term = get_term( $custom_field, カスタムタクソノミー名 ); $slug = $term->slug; // タームのスラッグ $args = array( 'post_type' => 'カスタム投稿タイプ名', 'posts_per_page' => -1, 'tax_query' => array( array( 'taxonomy' => 'カスタムタクソノミー名', 'field' => 'slug', 'terms' => $slug, ), ), ); ``` これでいけるのではないでしょうか。