我有一个自定义帖子类型。我想创建一个短代码,以按ID号显示一些特定的帖子。例如。 ID为1、23、30等的帖子。这是我尝试创建短代码的方式
function success_short($atts) {
extract( shortcode_atts( array (
'id' => null,
'type' => 'aol_ad',
'order' => 'date',
'orderby' => 'title',
'posts' => -1,
'category' => '',
), $atts ) );
$args = array(
'post_type'=>$type,
'post_status'=>'publish',
'post__in' => array($id),
'posts_per_page'=>$posts,
'paged'=>get_query_var('paged')
);
$the_query = new WP_Query( $args ); ?>
<div class="post_wrap">
<?php if ( $the_query->have_posts() ) :
while ( $the_query->have_posts() ) : $the_query->the_post();
?>
<div class="case_boxes col-md-3">
<div class="case_box_img">
<?php the_post_thumbnail(); ?>
</div>
<div class="case_title">
<a href="<?php the_permalink(); ?>">
<h5><?php the_title(); ?></h5>
</a>
</div>
</div>
<?php
endwhile;
wp_reset_postdata(); ?>
</div>
<?php else : ?>
<p>Sorry, no posts matched your criteria. </p>
<?php endif;
}
add_shortcode('success-post', 'success_short');
然后,我尝试插入诸如[success-post id =“ 1、23、30”]之类的短代码,但该短代码未按该特定ID显示帖子。我该如何解决?谢谢
答案 0 :(得分:0)
Shortcode属性值默认为字符串。
因此,当您传递类似"1, 23, 30"
之类的东西时,它是一个字符串,并且您正试图将此字符串作为过滤器值传递给需要PHP数组的post__in
。
尝试一下-
...
posts__in => explode(",", str_replace(" ", "", trim($id, '"')))
...