【发布时间】:2016-01-18 23:36:13
【问题描述】:
关于只展示在售产品的问题和答案有很多,但无论我尝试什么,它都不起作用。
我有以下问题
function my_modify_main_query($query) {
if ($query -> query['post_type'] == 'product' && $query -> is_main_query() && is_shop()) {// Run only on the shop
if (isset($_GET['sale'])):
$query -> set('meta_query',
array(
'relation' => 'OR',
array(// Simple products type
'key' => '_sale_price',
'value' => 0,
'compare' => '>',
'type' => 'numeric'
),
array(// Variable products type
'key' => '_min_variation_sale_price',
'value' => 0,
'compare' => '>',
'type' => 'numeric'
)
)
);
endif;
}
}
// Hook my above function to the pre_get_posts action
add_action( 'pre_get_posts', 'my_modify_main_query' );
正在应用查询本身,但问题是。 如果 Product 已经是一个带有销售价格的变量,那么 Product 将被更改为 Simple Product,“_min_variation_sale_price”元值仍在数据库中。
有人知道解决方法吗?我认为这是一个错误,但他们的支持目前已关闭。
谢谢。
编辑
我认为我需要的是一种仅在产品属于“简单”或“外部”条款时检查 _sale_price 的方法,然后对 _min_variation_sale_price 执行类似操作。
我在他们的 github 上创建了一个问题。 https://github.com/woothemes/woocommerce/issues/10096
编辑
使用@helgatheviking 答案解决了问题。
虽然,请注意要完全解决问题,您必须删除变体,保存,更改类型,保存,运行delete_transient( 'wc_products_onsale' );
直到那时它才对我有用。
【问题讨论】:
标签: woocommerce wordpress