在短码中加载带有ID的自定义帖子类型

时间:2018-11-08 作者:Francis

我第一次提出了一个主题。我为横幅/行动调用创建了一个自定义的帖子类型,我想在不同的帖子中使用一个快捷码来包含这些横幅/行动调用。短代码应如下所示:[banner id=123].

到目前为止,所有的横幅都会显示出来,我的快捷码参数不会过滤结果。我的失败在哪里?

 function mrt_shortcode_banner( $atts ) {
        // Attributes
        $atts = shortcode_atts(
            array(
                \'bannerid\' => null,            ),
            $atts,
            \'banner\'
        );       

        $mrt_load_banner = new WP_Query( array(
            \'post_type\' => \'banner\',
            \'p\' => $bannerid ,            
        ) ); 

        if ( $mrt_load_banner->have_posts() ) { 
          while ( $mrt_load_banner->have_posts() ) { $mrt_load_banner->the_post(); ?>
                   <?php the_content(); ?>
            <?php 
             }
        } else {
          return \'Nothing found\';
        }
        wp_reset_postdata();
    }
add_shortcode( \'banner\', \'mrt_shortcode_banner\' );
我通过在函数中键入ID作为数值进行了测试:(\'p\' => 123). 这很好。所以我想我必须用另一种方式指定bannerid。但我不知道怎么做。谢谢你的提示!

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

好吧,我解决了我的问题-太简单了。

我替换了

\'p\' => $bannerid,  
使用

\'p\' => $atts[\'bannerid\'],  
现在我很高兴:)

结束

相关推荐

redirect if shortcode exists

WordPress初学者。我试图检查用户请求的页面中是否存在短代码,如果存在,则在用户未登录时重定向。function redirect_to_home() { if (has_shortcode(get_the_content(), \'shortcode\')) { if(!is_admin() && !is_user_logged_in()) { //redirect exit(); }