【问题标题】:WooCommerce products widget for a specific category - set category array per widget特定类别的 WooCommerce 产品小部件 - 为每个小部件设置类别数组
【发布时间】:2018-03-13 11:10:39
【问题描述】:

我和Quadie 有同样的问题,正如following thread 中回答的那样。

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' );

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

【问题讨论】:

    标签: php wordpress woocommerce categories product


    【解决方案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".
    );
    

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


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

    【讨论】:

    • 感谢您的回复!事实上,我知道 [product_category] ​​短代码,我现在正在使用它作为替代方案。但是,正如您提到的,我想在列表中显示产品,而不是使用网格,就像产品小部件的方式一样。因此,我对自定义产品小部件代码的尝试很糟糕。
    • 嗨 Loic,我投了赞成票,但由于我对 SE 很陌生,所以我的声誉不超过 15。因此,我的赞成票被记录下来但没有显示。这是我在投票时收到的信息。对不起!
    猜你喜欢
    • 1970-01-01
    • 2021-04-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-07-21
    • 2017-10-31
    • 1970-01-01
    相关资源
    最近更新 更多