针对特定类别的WooCommerce产品小部件 - 为每个小部件设置类别数组

时间:2017-10-02 11:22:24

标签: php wordpress woocommerce categories product

我和following thread中回答的Quadie有同样的问题。

LoicTheAztec提供的代码效果很好......

add_filter( 'woocommerce_products_widget_query_args', function( $query_args ){
    // Set HERE your product category slugs 
    $categories = array( 'music', 'posters' );

    $query_args['tax_query'] = array( array(
        'taxonomy' => 'product_cat',
        'field'    => 'slug',
        'terms'    => $categories,
    ));

    return $query_args;
}, 10, 1 );

...但我想知道是否有扩展此代码的选项,以便能够设置每个单独的小部件的类别。例如。我想要一个页面x上的类别1的产品小部件,而我想要第x页的其他地方的类别2的产品小部件。

我在考虑使用shortcode&将类别指定为此短代码的数组,但不确定如何实现它。

关于这个问题的任何想法?

这是我尝试使用的短代码:

[productsbycat cat1="broodjes"]

&安培;它会触发以下代码:

function productsbycat_func( $atts ) {
    $categories = shortcode_atts( array(
        'cat1' => 'something',
        'cat2' => 'something else',
    ), $atts );

    add_filter( 'woocommerce_products_widget_query_args', function ( $query_args ){

        $query_args['tax_query'] = array( array(
            'taxonomy' => 'product_cat',
            'field'    => 'slug',
            'terms'    => $categories,
        ));

        return $query_args;
    }, 10, 1 );
 }

add_shortcode( 'productsbycat', 'productsbycat_func' );

但是,它还没有产生任何东西。

1 个答案:

答案 0 :(得分:1)

  

无法扩展我的代码"能够为每个单独的小部件设置类别"。

仅适用于您的短代码我认为您不需要为此进行任何代码自定义。

我看一下与WooCommerce Shortcodes相关的WooCommerce官方文档,您会在"Product category"部分看到这个简短的代码: [product_category] ,主要参数是的 category

您可以通过以下方式添加一个产品类别 slugs

[product_category category="clothing"] // One product category

对于许多产品类别 slugs (昏迷分开)这样:

[product_category category="posters,music"]

默认参数设置(您可以更改)是:

$args = array(
    'per_page' => "12",
    'columns' => "4",
    'orderby' => 'title', // or by "menu_order"
    'order' => "asc", // or "desc"
    'category' => "" // Always only product category slugs
    'operator' => "IN" // Possible values are "IN", "NOT IN", "AND".
);
  

但它不会像您在产品小部件中那样工作,因为它会显示已定义类别的产品网格循环

  

您应该构建自己的小部件。