お世話になります。
WordPressにて、カスタム投稿の最新記事を4件取得用のショートコードを作成したいのですが、
'posts_per_page' => 4としているのですが、なぜか全件取得されてしまいます。
『カスタム投稿にて作成した記事のカテゴリーごとの最新記事を4件取得』 をどこにでも差し込めるようにショートコードにて作成をしたいと考えており、
下記のようなコードを考えております。
php
1function shortcode_show_case_list_estate($atts) { 2 $cat = ''; 3 if(isset($atts['cat'])) { // カテゴリ指定あるか 4 $cat = $atts['cat']; 5 } 6 $args = array( 7 'posts_per_page' => 4, 8 'post_type' => 'estate', 9 'post_status' => 'publish', 10 'has_password' => false, 11 'orderby' => 'date', 12 'order' => 'DESC' 13 ); 14 if($cat != '') { // カテゴリ指定 15 $catarr = array( 16 'tax_query' => array( 17 array( 18 'taxonomy' => 'estate_category', 19 'field' => 'slug', 20 'terms' => $cat 21 ) 22 ) 23 ); 24 $args += $catarr; 25 26 } 27 $posts = get_posts($args); 28 if( $posts ) { 29 $tg = '<div class="col-md-12 post-list"> 30 31 <div class="col-xs-12 text-center"><h3 class="text-center">その他の土地情報はこちら</h3></div>'; 32 foreach($posts as $post) : setup_postdata($post); 33 $terms = wp_get_object_terms($post->ID, 'estate_category'); 34 foreach($terms as $term) { 35 $term_name = $term->name; 36 } 37 38 $tg .= '<div class="col-md-3 col-xs-6"><a href="'.get_the_permalink($post->ID).'" title="'.get_the_title($post->ID).'">'; 39 $tg .= '<div class="post-list__item__thumb">'; 40 $tg .= get_the_post_thumbnail($post->ID, 'case-thumb', array( 'alt' => $term_name . 'の事例')).'<div class="post-list__item__hover"><span class="post-list__item__view">Detail</span></div>'; 41 $tg .= '</div>'; 42 $tg .= '<div class="post-list__item__title">'.get_field('address', $post->ID).'</div>'; 43 $tg .= '</a></div>'; 44 endforeach; wp_reset_postdata(); 45 $tg .= '</div><div class="row"><div class="col-md-4 col-md-offset-4"><nav> 46 <div class="pager"> 47 <li class="list"><a href="/estate">MORE</a></li> 48 </div></div> 49 </nav></div>'; 50 return $tg; 51 } 52 return ''; 53} 54add_shortcode('estate_list', 'shortcode_show_case_list_estate');
php
1'numberposts' => 4, 2``` 3こちらも試してみましたが、全件(6件中6件とも)取得されてしまいました。 4 5```php 6 $args = array( 7 'posts_per_page' => 4, 8 'post_type' => 'estate', 9 );
$args = array(部分を上記2行にしても全件取得されてしまいました。
前後のコードが原因なのでしょうか?
posts_per_pageしか使ったことがなく、
また、ショートコードを作りのも初めてのため、どこが影響しているのかが分からず、
どなたかご教授いただけないでしょうか?
どうぞよろしくお願いいたします。
回答2件
あなたの回答
tips
プレビュー