前提・実現したいこと
タームのアーカイブページにて思ったように表示ができないのでお力を借りたくご質問をさせていただきます。
2日悩んでおります。
現在、
カスタム投稿:hospital
タクソノミー:area
ターム:knagawa,yokohama,chigasaki・・・
など全国の病院を都道府県や都市ごとに登録しています。県が親タームで子タームで都市がある形です。
病院情報では
カスタムフォールドでは、病院名の他にチェックボックスで 口コミが多い、普通、口コミが少ない、情報なしを選択できるようになっています。
smart custum filldsを使い
タイプ:テキスト
ラベル:病院名
名前:cf-hospitalmei
タイプ:チェックボックス
ラベル:口コミ
名前:cf-kuchikomi
選択肢:
ooi => 口コミが多い
hutu => 普通
sukunai => 口コミが少ない
nashi => 情報なし
このように設定しています。
実現したいのは
https://example.com/hospital/area/kanagawa/yokohama/
としたときのアーカイブページでそこのタームに所属している
全部の病院をまずは表示し、次に、口コミが多い病院、普通の病院、口コミが少ない病院、情報なしの順に表示しようとしています。
メインループで
<ul> <?php if (have_posts()):while(have_posts()):the_post(); ?> <li><?php $cf_hospitalmei = SCF::get('cf-hospitalmei');echo $cf_hospitalmei;?></li> <?php endwhile; ?> <?php else: ?> <!-- 投稿が無い場合の処理 --> <?php endif; ?> </ul>これで現在のタームに所属されている(例なら横浜)の病院がすべて表示されています。
発生している問題・エラーメッセージ
そのあとに、サブループで【現在のタームに所属されていて、かつ口コミが多い病院だけを表示】することができません。 横浜だけでなく口コミが多いにチェックされているものをすべて取ってきてしまいます。
該当のソースコード
<?php $term = wp_get_object_terms($post->ID,'area'); //指定されたタクソノミーのタームを取得 $term_name = $term[0]->name; //ターム名 $term_slug = $term[0]->slug; //タームのスラッグ ?> <h2>口コミの多い病院はこちらです</h2> <ul> <?php $args = array( 'post_type' => 'hospital', 'taxonomy' => 'area', 'field' => 'id', 'terms' => $term_name, 'meta_key' => 'cf-kuchikomi', 'meta_value' => 'ooi', 'meta_compare' => 'LIKE' ); $my_query = new WP_Query($args); if ($my_query->have_posts()) : while ($my_query->have_posts()) : $my_query->the_post(); ?> <li><?php $cf_hospitalmei = SCF::get('cf-hospitalmei');echo $cf_hospitalmei;?></li> <?php endwhile; endif; wp_reset_postdata(); ?> </ul> <h2>口コミの普通の病院はこちらです</h2> <ul> <?php $args = array( 'post_type' => 'hospital', 'taxonomy' => 'area', 'field' => 'id', 'terms' => $term_name, 'meta_key' => 'cf-kuchikomi', 'meta_value' => 'hutu', 'meta_compare' => 'LIKE' ); $my_query = new WP_Query($args); if ($my_query->have_posts()) : while ($my_query->have_posts()) : $my_query->the_post(); ?> <li><?php $cf_hospitalmei = SCF::get('cf-hospitalmei');echo $cf_hospitalmei;?></li> <?php endwhile; endif; wp_reset_postdata(); ?> </ul>
途方にくれております、当方phpに先月からチャレンジしておりますが今後も勉強をしていきたいと思っております。
どうかお力添えをお願いできないでしょうか。よろしくお願いいたします。
回答2件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。