Wordpressのカスタム投稿機能を使って、エリアごとの記事ページを作成しています。
例えば、北海道、関東、東北といった記事詳細にはそれぞれエリアごとのタグが設定されており、
そのエリアに関連する記事を画像・タイトルとともにサイドナビに一覧で表示したいと考えています。
※タグには、エリアの他に「価格(例:10,000円、30,000円)」、「ジャンル(例:和食、洋食)」といったタグも設定しています。
以下の通り、wp_get_object_terms関数を使って、タクソノミー情報を取得し、一覧表示しようとしましたが、特定のタームを絞り込むことができず、表示することができませんでした。
分かる方いらっしゃいましたら、教えていただけますと幸いです。
どうぞよろしくおねがいします。
php
1<?php 2 $taxonomy_slug = 'areatag'; 3 $post_type_slug = 'area'; 4 // ターム情報を取得 5 $post_terms = wp_get_object_terms($post->ID, $taxonomy_slug); 6 if( $post_terms && !is_wp_error($post_terms)) { 7 $terms_slug = array(); 8 foreach( $post_terms as $value ){ 9 $terms_slug[] = $value->slug; 10 } 11 } 12 $args = array( 13 'post_type' => $post_type_slug, 14 'posts_per_page' => 5, 15 'post__not_in' => array($post->ID), // 現在の投稿を除外 16 'tax_query' => array( 17 array( 18 'taxonomy' => $taxonomy_slug, 19 'field' => 'slug', // スラッグに一致するタームを返す 20 'terms' => $terms_slug[2] // タームの配列を指定 21 ) 22 ) 23 ); 24 $the_query = new WP_Query($args); if($the_query->have_posts()): 25?> 26<!-- 同じエリアの記事 --> 27<div class="d-flex justify-content-between mb-2 mt-3 mt-md-0 bg-black pl-3 py-2"> 28 <p class="font-weight-bold mb-0 text-white">同じエリアの記事</p> 29 <p class="h8 mb-0 pr-4 pt-1"> 30 <?php $terms = get_the_terms( $post->ID, $taxonomy_slug); ?> 31 <?php foreach( $post_terms as $term ): ?> 32 <a href="<?php echo get_term_link( $term->term_id, $taxonomy_slug ); ?>" class="text-white <?php echo $term->slug ?>"> 33 <?php echo 'もっと見る' ?> 34 </a> 35 <?php endforeach; ?> 36 </p> 37</div> 38<?php while ($the_query->have_posts()): $the_query->the_post(); ?> 39<div class="d-flex"> 40 <div class="w-30"> 41 <a href="<?php the_permalink(); ?>" class="d-block overflow-hidden img-cropped"> 42 <?php if ( get_field('メイン画像') ) : ?> 43 <?php echo wp_get_attachment_image( get_field('メイン画像'), 'thumbnail', false, array( 'class' => 'img-fluid' ) ); ?> 44 <?php else : ?> 45 <img src="/example.png" class="img-fluid" alt="No_image_available"> 46 <?php endif; ?> 47 </a> 48 </div> 49 <div class="w-70"> 50 <p class="h9 ml-2"><a href="<?php the_permalink(); ?>" class="text-body"><?php the_title(); ?></a></p> 51 </div> 52</div> 53<hr class="my-2" /> 54<?php endwhile; ?> 55<?php wp_reset_postdata(); ?> 56<?php endif; ?>
回答1件
あなたの回答
tips
プレビュー