将类别属性添加到自定义快捷代码

时间:2013-07-09 作者:Ciaran Gaffey

我创建了一个名为“faq”的自定义帖子类型。自定义帖子类型使用类别。我创建了一个显示所有常见问题帖子的快捷码[常见问题]。

我想做的是在指定faq类别的快捷代码中添加一个属性。因此,它不会使用快捷代码[faq],而是类似于[faq category=“travel”],只会显示“travel”类别中的帖子。

目前,我正在使用以下代码作为短代码。我只需要以某种方式添加category属性:

add_shortcode(\'faq\', function() {

    $posts = get_posts(array(  //Get the FAQ Custom Post Type
        \'numberposts\' => -1,
        \'orderby\' => \'menu_order\',
        \'order\' => \'ASC\',
        \'post_type\' => \'faq\',
    ));

    $faq  = \'<div id="faq-accordion">\'; //Open the container
    foreach ( $posts as $post ) { // Generate the markup for each Question
        $faq .= sprintf((\'<h3><a href="">%1$s</a></h3><div>%2$s</div>\'),
            $post->post_title,
            wpautop($post->post_content)
        );
    }
    $faq .= \'</div>\'; //Close the container

    return $faq; //Return the HTML.
});

2 个回复
最合适的回答,由SO网友:Johannes Pille 整理而成

add_shortcode( \'faq\', \'wpse105856_shortcode_callback\' );

function wpse105856_shortcode_callback( $atts ) {
    extract( shortcode_atts( array(
        \'category\' => \'\'
    ), $atts ) );

    $args = array(
        \'numberposts\' => -1,
        \'orderby\' => \'menu_order\',
        \'order\' => \'ASC\',
        \'post_type\' => \'faq\'
    ));

    if ( ! empty( $category ) ) {
        $args[\'category_name\'] = $category;
    }

    $posts = get_posts( $args );

    $faq  = \'<div id="faq-accordion">\'; //Open the container
    foreach ( $posts as $post ) { // Generate the markup for each Question
        $faq .= sprintf((\'<h3><a href="">%1$s</a></h3><div>%2$s</div>\'),
            $post->post_title,
            wpautop($post->post_content)
        );
    }
    $faq .= \'</div>\'; //Close the container

    return $faq; //Return the HTML.
});
注意:即使调用了WP\\u查询参数category_name, 预计会给它一个弹头。

SO网友:kuldeep sandhu

我创建了一个自定义帖子类型,名为“whiz_qt_quote“。自定义帖子类型使用类别。我为所有帖子创建了一个快捷码。”[quote].

我想在一个页面上显示一个类别的帖子。因此,不要使用短代码[quote], 可能是这样的[quote category="motivation"] 它只会显示“动机”类别的帖子。

目前,我正在使用以下代码作为短代码。我只需要以某种方式添加category属性:

if (!defined(\'ABSPATH\')) exit;

function whiz_qt_feed_shortcode( $atts ) {
    extract( shortcode_atts( array( \'limit\' => 3, \'type\' => \'whiz_qt_quote\',\'category\' => \'\'), $atts ) );
    global $paged;
    $paged = get_query_var(\'paged\') ? get_query_var(\'paged\') : 1;  

        $args = query_posts(  array ( 
        \'posts_per_page\' => $limit, 
        \'post_type\' => $type, 
        \'order\' => \'ASC\', 
        // \'orderby\' =>\'menu_order\', 
        \'paged\' => $paged ,
        \'category_name\' => $category) );
        if ( ! empty( $category ) ) {
        $args[\'category_name\'] = $category;
    }
$list = \' \';   
while ( have_posts() ) { the_post();

    $list .= \'<article class="listing-view clearfix">\' 
    . \'<div class="listing-content">\' 
    . \'<h3><a href="\' . get_permalink() . \'">\' . get_the_title() . \'</a></h3>\' 
    .\'<p>\' . get_the_excerpt() . \'</p>\'
    . \'</div>\'
    . \'</article>\';
}

return 
\'<div class="listings clearfix">\' 
. $list 
. \'<div class="nav-previous">\' . get_next_posts_link( __( \'<span class="meta-nav">&larr;</span> Older posts\' ) ) . \'</div>\'
. \'<div class="nav-next">\' . get_previous_posts_link( __( \'Newer posts <span class="meta-nav">&rarr;</span>\' ) ) . \'</div>\'
. \'</div>\' .
wp_reset_query();

}
add_shortcode( \'quote\', \'whiz_qt_feed_shortcode\' );
?>`

结束

相关推荐

show shortcodes in editor

有没有什么方法可以在编辑器面板中显示自定义的短代码,我已经创建了一些短代码,并认为这是一个好主意?除了关于如何创建它们的教程之外,我在网上找不到任何其他内容-我已经知道了。谢谢