①ピックアップ記事用のカスタムタクソノミーのタームを追加してそのタームが属しているものを取得する
②ピックアップ記事用のカスタム投稿&カスタムフィールドを追加し、1つ記事を作成する。
カスタムフィールドの値にピックアップしたい記事IDを管理画面上で指定して、テンプレートファイルでカスタムフィールドの値(記事ID)を取得し、記事情報を取得する。
自分は②の方法で実装しました。
ありがとうございます!
②の方法で試したところ、解決しました。
他の方のご参考までに、現状のテンプレートの抜粋を記しておきます。
とりいそぎ取りまとめたもので、記法や命名規則がバラバラでお恥ずかしいのですが、何かの参考になれば幸いです。
<?php
//ダミー記事から「表示したい地域の情報」を取得する
$args = array(
'numberposts' => 1,
'post_type' => 'tourism_pickup' //ダミー記事の投稿タイプ名
);
$customPosts = get_posts($args);
if($customPosts) : foreach($customPosts as $post) : setup_postdata( $post );
$ids = post_custom( 'tourism-pickupid' ); //ピックアップしたい地域に属する記事一つのID
$terms = get_the_terms($ids, 'tourism_area'); //その記事のカテゴリ一覧
foreach($terms as $term){ //一覧から親カテゴリのみを抽出
if($term->parent == 0){
$pickupcat = $term; //ピックアップしたい地域のタクソノミー情報(配列)を取り出せました
break;
}
}
endforeach;
endif;
wp_reset_postdata();
//取得した地域情報をもとに記事一覧を出力
$args = array(
'post_type' => 'tourism', //実際の記事の投稿タイプ名
'tax_query' => array( //タクソノミー、タームの設定
array(
'taxonomy' => 'tourism_area', //タクソノミーのスラグ
'field' => 'slug', //slugに指定(必須)
'terms' => $pickupcat->slug //タームのスラグ 先ほど取り出した配列から取得
)
)
);
$domestic_post = get_posts($args);
if($domestic_post) : foreach($domestic_post as $post) : setup_postdata( $post ); ?>
<li><a href="<?php the_permalink(); ?>" title="<?php the_title_attribute(); ?>"><?php the_title(); ?></a></li>
<?php endforeach; ?>
<?php else : //記事が存在しない場合 ?>
<p>表示する記事がありません。</p>
<?php endif;
wp_reset_postdata();
?>