如何将类别参数添加到短代码?

时间:2017-03-22 01:15:43

标签: php wordpress parameters shortcode

我正在尝试创建一个显示我的帖子类型的短代码:advanced_topic但是想要添加类别参数,例如

[高级主题类别="假释"]

仅显示该类别下的主题。

这是我到目前为止的代码,但我觉得我错过了一些因为它不起作用的东西...任何帮助都表示赞赏。谢谢。

function display_advanced_topics(){

    extract( shortcode_atts( array( 'category_name' => 'criminal-records' ), $args ) ); // $categoryName variable will be initialized to 'criminal-records' if the shortcode is missing the 'category' parameter

    $string = '';
    $args = array(
    'post_type' => 'advanced_topic',
    'posts_per_page' => -1,
    'post_status' => 'publish',
    'category_name' => $categoryName
    );

$query = new WP_Query( $args );
if( $query->have_posts() ){
    $string .= '<div class="advanced-topics">';
    while( $query->have_posts() ){
        $query->the_post();

        $string .= 
        '<div class="row advanced-topic">'
                    .'<div class="content">
                            <div class="title"><?php get_the_title(); ?></div>
                        </div>'
                .'</div>';
    }
            $string .= '</div>';

}
wp_reset_postdata();
return $string;
}
add_shortcode( 'advanced-topics', 'display_advanced_topics' );

1 个答案:

答案 0 :(得分:0)

  1. 总是很好用

        error_reporting(E_ALL);
        ini_set('display_error', 1);
    
  2. 错误的引号

        ob_start();
        get_the_title()
        $the_title = ob_get_clean();
        $string .= 
        '<div class="row advanced-topic">'
                    .'<div class="content">
                            <div class="title">'. $the_title .'</div>
                        </div>'
                .'</div>';
    
  3. 如果get_the_title()打印结果,则必须使用ob_get_clean