現在、WordPressにてサイトを作っています。
トップページに、カスタム投稿のループを表示させています。
カスタム投稿名【blog】
タクソノミー名【blog-cat】
ターム名【news, staff, plan】
現在は下記のコードように、
【news】のタームの記事のみを除外するように設定しています。
記事が【news】のタームだけに属している場合は、下記のループから除外されてもいいのですが、
【news】のタームに属している記事が、他のタームとも複数チェックが入っている場合は除外させないようにしたいのです。
例えば(A)という記事に【news】と【staff】のタームの両方にチェックが入った場合、(A)の記事は、【news】に属していたとしても【staff】のタームの記事として、除外されず、表示されるようにしたいです。
このようなことは、なんらかの方法で可能でしょうか?
いろいろ調べてみたのですが、なかなかわからず、わかる方に教えて頂けたらと思っています。
よろしくお願いいたします。
PHP
1<ul> 2 <?php $args = array( 3 'post_type' => 'blog', //投稿タイプ 4 'posts_per_page' => 6, 5 'tax_query' => array( //タクソノミー、タームの設定 6 array( 7 'taxonomy' => 'blog-cat', //タクソノミー 8 'field' => 'slug', //基本的にslugに指定します(必須) 9 'terms' => 'news', //ターム 10 'operator' => 'NOT IN' 11 ) 12 ) 13 ); 14 $domestic_post = get_posts($args); 15 if($domestic_post) : foreach($domestic_post as $post) : setup_postdata( $post ); ?> 16 <li> 17 <div class="category"> 18 <?php 19 //ひとつだけタームを取得 20 $terms = get_the_terms( get_the_ID(), 'blog-cat' ); 21 if ( !empty($terms) ) { 22 foreach( $terms as $term ) { 23 echo $term->name; 24 break; // ブレイクして他のタームを取得させない 25 } 26 } else { 27 echo "カテゴリなし"; 28 } 29 ?> 30 </div> 31 <div class="title"><a href="<?php the_permalink(); ?>"><?php the_title(); ?></a></div> 32 </li> 33 <?php endforeach; ?> 34 <?php else : //記事が存在しない場合 ?> 35 <li class="top_noentry">表示する記事がありません。</li> 36 <?php endif; 37 wp_reset_postdata(); ?> 38</ul>
回答3件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。