

こんにちは。  
wordpressを使用してホテルのウェブサイトを制作しています。

＊＊＊実現したいこと＊＊＊  
ホテルの検索ページでドロップダウンを使用して目的地と旅行テーマでフィルターをかけられるページを作成しています。  
カテゴリー”ホテル”の投稿記事に、カテゴリー”旅行テーマ”が登録されているか確認して、その登録されている旅行テーマ又は目的地のみを表示したいです。

例としてカテゴリーは以下です。  
カテゴリー ホテル(id=18)  
カテゴリー 目的地(id=15) => 子カテゴリー ”日本=>東京”、”イギリス=>ロンドン”、”フランス＝>パリ”  
カテゴリー 旅行テーマ(id=2) => 子カテゴリー ”ショッピング”、”食べ歩き”、”ロマンティック”

記事Aは、ホテル、旅行テーマの食べ歩き、目的地は日本=>東京  
記事Bは、ホテル、旅行テーマのロマンティック、目的地はフランス＝>パリ

この場合、旅行テーマのドロップダウンの選択肢には、食べ歩きとロマンティックのみを表示させ、目的地の選択肢には日本とフランスのみを表示させたいのですが、どうやってcategory.php上でそれぞれのカテゴリーを取得したらいいのか全く分からず手が動かない状態です。目的地と旅行テーマの子カテゴリーには、たくさん他にも登録されています。

＊＊＊現状＊＊  
下記のコードだと全てのカテゴリーが表示され、フィルターできていない状態です。

[code]

    <!--category-18.php-->
    <!--目的地のカテゴリー取得-->
    $destinations = get_categories(array(
       'parent' => 15,
       'hide_empty' => 1,
       'hierarchical' => 0
    ));
    foreach ($destinations as $dest) : ?>
    <option class="category__filter__dropdown" value="<?php echo $dest->term_id; ?>" data-destination="<?php echo $dest->term_id; ?>">
           <?php echo $dest->name;>
    </option>
    <?php endforeach; ?>
    
    <!--旅行テーマのカテゴリー取得-->
    $travel_topics = get_categories(array(
           'parent' => 2,
           'hide_empty' => 1,
           'hierarchical' => 0
    ));
    foreach ($travel_topics as $cat) : ?>
    <option class="category__filter__dropdown" value="<?php echo $cat->term_id; ?>" data-reisethema="<?php echo $cat->term_id; ?>">
           <?php echo $cat->name;>
    </option>
    <?php endforeach; ?>
    
[/code]

もしアドバイスいただけたらとても助かります。よろしくお願いします。  
[teratail](https://teratail.com/questions/mro8siju16njae)にも同じ質問をしましたが、まだコメントをもらっていないのでここでも質問を投稿しました。


CC BY-SA 4.0
2022-02-12T07:26:09.563
86284
2022-02-24T13:25:37.950
2022-02-14T07:22:32.083
29392
29392
question
php wordpress
カテゴリーのホテル一覧ページで、カテゴリーAがカテゴリーのホテルに属しているか確認して表示したいです。


ちょっと質問の内容が把握しきれなかったのですが、なんとなくですみませんが投稿してみます。  
検索って、いろいろ関わってくるので大変ですよね。  
`get_categories`で取得するカテゴリーで、'include'で必要なものだけにするか、不要なものを`exclude`で除外するといいんじゃないでしょうか？  
<https://wpdocs.osdn.jp/%E9%96%A2%E6%95%B0%E3%83%AA%E3%83%95%E3%82%A1%E3%83%AC%E3%83%B3%E3%82%B9/get_categories>

無数にカテゴリーを作ってあるようですので、一旦は`get_categories`で全部カテゴリー情報を取得して、そいつから「これに含まれているカテゴリなのでいらない、これもいらない」とか不要なものを引っこ抜いたりしていくのかな。

とにかく、必要なカテゴリーのIDを配列で作れたらいいですね。  
そしたら'include'で指定してあげれば自由に取り出せると思います。  
工夫してやってみるといいんじゃないでしょうか。


CC BY-SA 4.0
2022-02-24T13:25:37.950
86562
2022-02-24T13:25:37.950
51589
86284
answer