如何从函数中获取参数并使其作为短码中的属性可编辑

时间:2016-07-15 作者:Darren Bachan

我想让用户可以轻松编辑短代码,如何修改此短代码:

add_shortcode( \'show_news\', \'news_query\' );

function news_query() {
    $args = array(
        \'posts_per_page\' => 3,
        \'category_name\' => \'news\',
    );
    $news_query = new WP_Query( $args );
    if ( $news_query->have_posts() ) :
        $html_out = \'<article>\';
        while ( $news_query->have_posts() ) :
            $news_query->the_post();
            // Do stuff with each post here
            $html_out .= \'<div class="news-item"><div class="meta-date">\' . Date(\'m/y\') . \'</div><div class="meta-info"><div class="meta-title"><h4><a href="\' . get_permalink() . \'">\' . get_the_title() . \'</a></h4></div><div class="meta-excerpt">\' . get_the_excerpt() . \'</div></div></div>\';
        endwhile;
        $html_out .= \'</article>\';
    else : // No results
        $html_out = "Nothing to show";
    endif;
    wp_reset_query();
    return $html_out;
}
这样它就可以使用这个短代码[最近发布的文章类型=“news”posts\\u per\\u page=“3”]

1 个回复
SO网友:cjbj

本质上,您是在询问如何将参数传递给短代码。这可以通过函数完成shortcode_atts, 它有两个必需的参数:有效参数及其默认值的数组,以及正在传递的短代码的属性。您可以这样使用它:

add_shortcode( \'wpse232385_show_news\', \'wpse232385_news_query\' );

function wpse232385_news_query ($atts) {
$news_atts = shortcode_atts( 
    array(
      \'posts_per_page\' => 3,
      \'category_name\' => \'news\' ),
    $atts );
$args = array(
    \'posts_per_page\' => $news_atts[\'posts_per_page\'],
    \'category_name\' => $news_atts[\'category_name\'],
);
$news_query = new WP_Query( $args );
...
}

相关推荐

我可以将参数传递给Add_ShortCode()函数吗?

正如标题所述,我需要向add_shortcode() 作用换句话说,我传递的那些参数将在的回调函数中使用add_shortcode(). 我该怎么做?请注意,这些与以下结构无关[shortcode 1 2 3] 哪里1, 2, 和3 是用户传递的参数。在我的情况下,参数仅用于编程目的,不应由用户负责。谢谢