在产品类别和商店页面上显示产品变化

时间:2018-09-23 16:54:35

标签: wordpress woocommerce

我想根据我计划添加到每个可变产品的自定义字段,在商店和产品类别页面上显示某些(不是全部)可变产品的产品变化。为了使分页工作正常进行,我可以连接到WC_Query :: product_query($ q)中的woocommerce_product_query钩子,但是我不知道如何修改查询以获取所需的信息。

我要应用的逻辑是:

//Pseudo-code
$loop = $query->get_all_products // i.e. not just for one page
foreach ( $loop as $product) {
    if ($product->is_simple) {
        display_simple($product)
    } else {
        $variations = wc_get_products($product->get_children());
        foreach ($variations as $product) {
            if ($product->custom_show_on_archive_pages) {
                display_variation($product)
            }            
        }
    }    
}

上面的问题(除了是伪代码)是它假设我们有一个名为$loop的数组,但实际上我们有一个查询对象。

我的理想做法是修改查询,使其根据伪代码生成结果,然后我的archive-product.php模板可以使用if / else显示简单与可变产品。

在我的functions.php中是这样的:

add_action( 'woocommerce_product_query', 'show_variable_products');

function show_variable_products( $q ) {

    $meta_query = $q->get('meta_query');

    // Do something

    $q->set('meta_query', $meta_query);
}

我想知道是否需要以某种方式实际运行多个查询:

  1. 原始查询但已过滤到父产品
  2. 将这些父产品(即变体)的子代过滤为选中了自定义字段的子代
  3. 原始查询但已过滤为简单产品
  4. 合并(2)和(3)

这可能吗?

或者,还有其他解决方案(不涉及购买插件)吗?

0 个答案:

没有答案