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

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

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

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

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

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

myidgy 回答:按当前类别显示Woocommerce畅销产品

将此添加到您的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"] 该简码将自动获取类别

,

在活动主题的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"]即可获取数据。

本文链接:https://www.f2er.com/3164608.html

大家都在问