サポート » 使い方全般 » 管理画面から特定のタクソノミーを選択してピックアップ表示させたい

  • 解決済 goshinzo

    (@goshinzo)


    初めまして、よろしくお願いします。

    カスタム投稿タイプ「tour」とカスタムタクソノミー「tour-area」を使って
    地域ごとの旅行ガイドを作っているとします。
    「tour-area」には例えば「hokkaido」や「kyushu」などを指定しています。

    このとき、カスタム投稿タイプ「tour」のアーカイブページに
    今月のおすすめ旅行先、として
    「kyushu」タクソノミーを指定したカスタム投稿タイプ「tour」の記事の一覧を表示したいと考えています。
    最もシンプルには、テンプレートやfunction.phpに
    「kyushu」のIDやスラッグを直書きして絞り込むことになると思うのですが、
    これを、管理画面の操作だけで(FTPを使わず)
    どの地域をピックアップするか後から変更できるようにしたいのです。

    検索しても同じことを試している方が見つからず、
    どのようにすればよいか困っています。
    ご助言をお願いできますでしょうか。よろしくお願いします。

2件の返信を表示中 - 1 - 2件目 (全2件中)
  • test 1234

    (@lifestyledesign7777)

    ①ピックアップ記事用のカスタムタクソノミーのタームを追加してそのタームが属しているものを取得する

    ②ピックアップ記事用のカスタム投稿&カスタムフィールドを追加し、1つ記事を作成する。
    カスタムフィールドの値にピックアップしたい記事IDを管理画面上で指定して、テンプレートファイルでカスタムフィールドの値(記事ID)を取得し、記事情報を取得する。

    自分は②の方法で実装しました。

    スレッド開始 goshinzo

    (@goshinzo)

    ありがとうございます!
    ②の方法で試したところ、解決しました。

    他の方のご参考までに、現状のテンプレートの抜粋を記しておきます。
    とりいそぎ取りまとめたもので、記法や命名規則がバラバラでお恥ずかしいのですが、何かの参考になれば幸いです。

    <?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();
    ?>
2件の返信を表示中 - 1 - 2件目 (全2件中)
  • トピック「管理画面から特定のタクソノミーを選択してピックアップ表示させたい」には新たに返信することはできません。