我想根据我计划添加到每个可变产品的自定义字段,在商店和产品类别页面上显示某些(不是全部)可变产品的产品变化。为了使分页工作正常进行,我可以连接到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);
}
我想知道是否需要以某种方式实际运行多个查询:
这可能吗?
或者,还有其他解决方案(不涉及购买插件)吗?