按当前类别显示Woocommerce畅销产品

时间:2019-11-04 18:09:32

标签: php wordpress woocommerce shortcode

我想创建一个短代码,可以将其放在类别页面上,例如在侧边栏上。 它应该显示类别中最畅销的产品。

我找到的唯一解决方案是,如果我用slug或id指定类别,如下所示:

[best_selling_products category =” 厨房配件” column =“ 1” per_page =“ 5”]

如何将短代码转换为类似的内容?

[best_selling_products category =” 当前类别”列=“ 1” per_page =“ 5”]

2 个答案:

答案 0 :(得分:0)

将此添加到您的functions.php

function custom_best_selling_products( $attr = array() ){
    $string = '[best_selling_products ';
    $string .= ' category="' . get_query_var( 'term' ) . '" ';
    if( $attr ){
        foreach ( $attr as $key => $value ) {
            $string .= ' ' . $key . '="' . $value . '" ';
        }
    }
    $string .= ']';

    return do_shortcode( $string );
}

add_shortcode( 'custom_best_selling_products', 'custom_best_selling_products' );

这将创建一个自定义的简码,您可以像这样使用它:[custom_best_selling_products columns="1" per_page="5"] 该简码将自动获取类别

答案 1 :(得分:0)

在活动主题的functions.php中添加以下代码段,以从当前的$term或类别页面获得最畅销的产品-

function modify_woocommerce_shortcode_products_query( $query_args, $attributes, $type ) {
    if( $type != 'best_selling_products' ) return $query_args;

    $term = get_queried_object();
    if( $term ) {
        if( !isset($query_args['category'] ) ){
            $query_args['category'] = $term->slug;
        }
    }
    return $query_args;
}
add_filter( 'woocommerce_shortcode_products_query', 'modify_woocommerce_shortcode_products_query', 99, 3 );

添加只需使用woocommerce默认短代码[best_selling_products columns="1" per_page="5"]即可获取数据。