如何在Wordpress中添加多个值的短代码属性?

时间:2018-05-28 14:09:14

标签: php wordpress

如何使用多个值为Wordpress短代码功能添加属性?确切地说,我想添加'order'属性和选项(值)ascdesc,以便我可以在短代码中使用它,例如[reviews_category id=1 tag=25 order=asc]order=desc

到目前为止我想到的是添加

    'orderby' => 'taxonomy_cat',
    'order' => desc

这会进行排序但不允许我使用ascdesc作为排序方向设置短代码中的属性。它只按desc

排序

我的功能是:

function review_category_func($atts) {
    $taxID = intval($atts["id"]);
    $ppp = intval($atts["posts_per_page"]);
    $output = '';

    $args = array(
        "post_type" => "reviews",
        "posts_per_page" => $ppp,
        'tax_query' => array(
            array(
                'taxonomy' => 'review_category',
                'id' => 'term_id',
                'terms' => $taxID
            )
        ),
        'orderby' => 'taxonomy_cat',
        'order' => desc
);
    if (isset($atts['tag'])) {
        $terms = explode(',', $atts['tag']);
        $args['tax_query']['relation'] = 'AND';
        $args['tax_query'][] = array(
                'taxonomy' => 'review_sources',
                'id' => 'term_id',
                'terms' => $terms
            );
    }

    $qry = new WP_Query( $args );

//the rest of the code here....

//ends here

    <?php
    }

    wp_reset_query();

    return $output;
}

add_shortcode("review_category", "review_category_func");

1 个答案:

答案 0 :(得分:0)

您需要使用shortcode_atts(),因为它在codex中有解释:https://codex.wordpress.org/Function_Reference/shortcode_atts

$args = shortcode_atts(
    array(
        'orderby' => 'taxonomy_cat',
        'order' => 'desc',
        ...
    ), 
    $atts
);

然后你清理你的变量,如:

$orderby = esc_attr( $args['orderby'] );