使用短码在自定义循环中获取具有特定ID的自定义帖子

时间:2014-03-01 作者:Nikita

所以我使用自定义循环和快捷码将其插入任何页面。像这样:

function register_custom_shortcode($atts){

    extract(shortcode_atts(array(
        \'ids\' => \'\', // this is what I need
        ), $atts));

    $cutom_loop = new WP_Query( array( 
        \'post_type\' => \'cutom_post\',
        \'orderby\' => \'menu_order\',
        \'order\' => \'ASC\'
        ) );

    ob_start();


    while ( $cutom_loop->have_posts() ) : $cutom_loop->the_post(); ?>

    <article id="post-<?php the_ID(); ?>" <?php post_class(\'\'); ?>>

    // post thumb, title and so on

    </article>

    <?php endwhile;


    wp_reset_postdata();
    $content = ob_get_contents();
    ob_end_clean();
    return $content;
}

add_shortcode( \'custom_loop\', \'register_custom_shortcode\' );
我应该如何处理此ID以具有以下短代码:[custom_loop ids="112,93,34,91"]?

EDIT:

好吧,如果我加上\'post__in\' => array(189,173) 对于新的WP\\u查询,它将只输出这两篇文章,但仍然无法找出如何从短代码中获取此ID。

1 个回复
最合适的回答,由SO网友:Nicklas 整理而成

如果在短代码中使用逗号分隔的id,如"112,93,34,91", 您可以使用explode 函数从字符串中生成一个数组,如下所示:

extract(shortcode_atts(array(
    \'ids\' => \'\'
), $atts));

$id_array = explode(\',\', $ids); 
那么你只需要使用\'post__in\' => $id_array

结束

相关推荐

How do I make a shortcode?

边走边学。。。我已经构建了这个功能,但我需要它作为一个短代码。我该怎么做?$args = array( \'taxonomy\' => \'product_cat\' ); $terms = get_terms(\'product_cat\', $args); $count = count($terms); $i=0; if ($count > 0) { $cape_list = \'<p class=\"my_term-archive\