WP_Query in a shortcode

时间:2013-04-20 作者:Jamie

我正在尝试将多个查询放在一个短代码中,以便可以在页面中调用它们,而不是使用自定义模板。我开始了我的查询,但我只看到了页面上的一些内容。显示图像,显示文本,但没有显示任何html标记。是否有一个Wordpress函数,我需要将其全部传递,以便它不会剥离HTML?

function band_query($atts) { ?>
    <ul>
    <?php                           
    extract(shortcode_atts(array(
        "category" => \'\',
        "number" => \'\'
    ), $atts));

    $band = new WP_Query( array(
        \'category_name\' => $category,
        \'posts_per_page\' => $number
    ));
    $output = \'\';
    // The Loop
    if( $band->have_posts()):
        $output .= \'<div id="band_bio">\';
        $output .= \'<ul>\';
        while ( $band->have_posts() ) : $band->the_post(); 
            $output .= \'<li>\';
            $output .= \'<figure>\' . the_post_thumbnail(\'band\', array(\'class\' => \'left marg_right1\')) .\' </figure>\';
            if ( has_excerpt()){
                $output .= the_excerpt();
            } else {
                $output .= the_content(); 
            }                                   
            $output .= \'<div class="relative"><a href=\' .the_permalink() . \'class="button1">  <span></span><strong>Read More</strong></a></div>\';
            $output .= \'</li>\';
        endwhile; 
    endif;
    wp_reset_postdata();
    $output .= \'</ul>\';

    $output .= \'
    </div>
    <a href="#" class="prev"></a>

    <a href="#" class="next"></a>

    $output = apply_filters(\'the_content\', $content);   
    return $output;

}
add_shortcode("band_page", "band_query");

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

当您构建$output 变量,您需要考虑

get_the_post_thumbnail()
get_the_excerpt()
get_the_content()
get_permalink()
返回值,而不是

the_post_thumbnail()
the_excerpt()
the_content()
the_permalink()
这将回声这些值。

结束

相关推荐

通过ShortCode属性传递标记

祝大家节日快乐。希望有人能帮助我思考我遇到的问题。我有一个插件Im building,允许用户从maps API中提取地址数据,即它验证地址,如果是业务,则提取标记图标、地址详细信息、web链接等,并构建一个短代码以在前端呈现地图。目前正在构建短代码,并通过tinyMCE模式窗口预览结果。创建地图标记内容(标记信息气泡)是导致我变灰的原因。我希望用户能够添加或操作此块的内容,但最终的结果是相当多的标记。到目前为止,我已尝试通过以下其中一个快捷码属性传递生成的标记:[my_gmaps id=\"map\"