如何在tax_query上使用shortcode_atts()?

时间:2013-11-28 21:29:49

标签: wordpress shortcode

我有这个短代码:

add_shortcode('menu2','menu2');

function menu2($atts, $content = ''){
ob_start();

$options = shortcode_atts( array(
    'post_type' => 'menu',
    'posts_per_page' => -1,
    'order' => 'ASC',
    'tax_query' => array(
            array(
                'taxonomy' => 'menu_type',
                'field' => 'slug',
                'terms' => 'lunch_menu'
            )
        )
    ), $atts);

$query = new WP_Query($options);

我上面的代码是一个短代码,使用如下:

[menu2 terms="wines"]Wines[/menu2]

lunch_menu应替换为wines,但事实并非如此。我应该改变什么?

1 个答案:

答案 0 :(得分:0)

您在错误的阵列上运行shortcode_atts()。您需要tax_query,但是您正在使用完整的数组。

我猜你需要这样的东西:

$tax_query = shortcode_atts( 
    array(
        array(
            'taxonomy' => 'menu_type',
            'field'    => 'slug',
            'terms'    => 'lunch_menu'
        )
    ), 
    $atts
);

$options = array(
    'post_type'      => 'menu',
    'posts_per_page' => -1,
    'order'          => 'ASC',
    'tax_query'      => $tax_query
);

'posts_per_page' => -1非常非常危险。当您的用户拥有100k匹配帖子时会发生什么?不要那样做。