質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

ただいまの
回答率

87.79%

親タームのみに属する記事を子タームの全ページに表示させたい

受付中

回答 0

投稿

  • 評価
  • クリップ 0
  • VIEW 344

score 8

前提・実現したいこと

wordpressで地域ポータルサイトを制作中です。
店舗個別ページはカスタム投稿で作成しました。この店舗個別ページを検索したく、以下の仕様で検索システムを実装しようとしているのですが・・・

カスタム投稿:restaurant
カスタム分類1:area_cat(エリア指定は2階層 都道府県-市区町村)
カスタム分類2:genre_cat(ジャンル指定は2階層 親カテゴリ-子カテゴリ)
カスタム分類1に属するターム:allarea(全国を指定する際に使用、都道府県と同階層)

ページ遷移
1、トップページにて、都道府県(例:東京都)を選択
2、東京都の飲食店一覧が表示される(テンプレート:taxonomy-area_cat.phpを使用)、このページに市区町村とジャンルで絞り込むエリアを設置(東京都以下の市区町村×ジャンルでの絞り込み、例:中央区×和食など)。
3、「中央区×和食」で絞り込んだ記事一覧が表示される

上記のような流れで検索結果ページまでたどり着くことができました。新たに「2」の部分に以下の機能を追加したいのですが、「b」に関してどのように実装して良いのかが分からず質問せせていただきました。

追加したい機能
a、親タームに「全国」というタームを追加し、投稿時このタームにチェックを入れた飲食店は、全ての検索結果ページに表示される(例:「全国」にチェックを入れた「和食処A」は、「中央区×和食」にも「札幌市×和食」にも表示される)→下記のコードで実装できました

<ul>
<?php 
$args = array(
    'posts_per_page' => -1,
    'post_type' => 'restaurant',//カスタム投稿名
    'tax_query' => array(
        array(
            'taxonomy' => 'area_cat',//タクソノミー名
            'field' => 'slug',
            'terms' => 'allarea' //ターム名(スラッグ)
        )
    )
);
$myposts = get_posts( $args );
foreach ( $myposts as $post ) : setup_postdata( $post ); ?>
    <li class="all-area">
        <h2><a href="<?php the_permalink(); ?>"><?php the_title(); ?></a></h2>
        <?php the_excerpt();?>
    </li>
<?php endforeach; 
wp_reset_postdata();?>

b、エリア指定は「都道府県-市区町村」の2階層 ですが、投稿時、親タームである都道府県のみにチェックが入った飲食店は、全ての市区町村検索結果一覧ページに表示をしたい(例:「北海道」のみにチェックを入れた「和食処B」は、「札幌市×和食」にも「函館市×和食」にも表示される)→こちらの実装方法がわかりません。
「a」で使用したコードの'terms' => 'allarea' //ターム名(スラッグ)部分で現在表示されているarea_catの親タームを取得できればいいのか?と考えたのですが、記述の仕方がわかりませんでした。
私の考え以外にも、「条件分岐の方が良い」などの案がや具体的な記述方法がありましたら教えていただきたいです!

wordpressの大まかな知識はありますが、phpコードの記述については全くの初心者です。
皆様のヒントや知恵をお貸しください!よろしくお願いします。 

  • 気になる質問をクリップする

    クリップした質問は、後からいつでもマイページで確認できます。

    またクリップした質問に回答があった際、通知やメールを受け取ることができます。

    クリップを取り消します

  • 良い質問の評価を上げる

    以下のような質問は評価を上げましょう

    • 質問内容が明確
    • 自分も答えを知りたい
    • 質問者以外のユーザにも役立つ

    評価が高い質問は、TOPページの「注目」タブのフィードに表示されやすくなります。

    質問の評価を上げたことを取り消します

  • 評価を下げられる数の上限に達しました

    評価を下げることができません

    • 1日5回まで評価を下げられます
    • 1日に1ユーザに対して2回まで評価を下げられます

    質問の評価を下げる

    teratailでは下記のような質問を「具体的に困っていることがない質問」、「サイトポリシーに違反する質問」と定義し、推奨していません。

    • プログラミングに関係のない質問
    • やってほしいことだけを記載した丸投げの質問
    • 問題・課題が含まれていない質問
    • 意図的に内容が抹消された質問
    • 過去に投稿した質問と同じ内容の質問
    • 広告と受け取られるような投稿

    評価が下がると、TOPページの「アクティブ」「注目」タブのフィードに表示されにくくなります。

    質問の評価を下げたことを取り消します

    この機能は開放されていません

    評価を下げる条件を満たしてません

    評価を下げる理由を選択してください

    詳細な説明はこちら

    上記に当てはまらず、質問内容が明確になっていない質問には「情報の追加・修正依頼」機能からコメントをしてください。

    質問の評価を下げる機能の利用条件

    この機能を利用するためには、以下の事項を行う必要があります。

まだ回答がついていません

15分調べてもわからないことは、teratailで質問しよう!

  • ただいまの回答率 87.79%
  • 質問をまとめることで、思考を整理して素早く解決
  • テンプレート機能で、簡単に質問をまとめられる

同じタグがついた質問を見る