如何创建将通过ID显示特定帖子的短代码

时间:2019-02-26 16:22:26

标签: wordpress post shortcode

我有一个自定义帖子类型。我想创建一个短代码,以按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显示帖子。我该如何解决?谢谢

1 个答案:

答案 0 :(得分:0)

Shortcode属性值默认为字符串。

因此,当您传递类似"1, 23, 30"之类的东西时,它是一个字符串,并且您正试图将此字符串作为过滤器值传递给需要PHP数组的post__in

尝试一下-

     ...
     posts__in => explode(",", str_replace(" ", "", trim($id, '"')))
     ...