我想过滤掉所有products in sale 来自WooCommerce循环。因此,我们的目标是创建一个产品循环new, 但不包含销售产品。问题是这些产品都是可变产品。我已经尝试使用常规的短代码,现在我正尝试使用自定义循环(wp\\u get\\u产品)来实现这一点。但我还是不明白为什么它没有按应有的方式工作。
我希望有人能在这方面帮助我。
我当前使用wp\\U get\\U产品的自定义循环(不工作):
if(!function_exists(\'wc_get_products\')) {
return;
}
$date_range = strtotime ( \'-8 days\' );
$paged = (get_query_var(\'paged\')) ? absint(get_query_var(\'paged\')) : 1;
$products_per_page = apply_filters(\'loop_shop_per_page\', wc_get_default_products_per_row() * wc_get_default_product_rows_per_page());
$recentProducts = wc_get_products(array(
\'meta_key\' => \'_price\',
\'status\' => \'publish\',
\'limit\' => $products_per_page,
\'page\' => $paged,
\'paginate\' => true,
\'return\' => \'ids\',
\'orderby\' => \'date\',
\'order\' => \'DESC\',
\'date_query\' => array(
array(
\'after\' => array(
\'year\' => date(\'Y\', $date_range ),
\'month\' => date(\'m\', $date_range ),
\'day\' => date(\'d\', $date_range ),
),
)
)
));
var_dump($recentProducts);
wc_set_loop_prop(\'current_page\', $paged);
wc_set_loop_prop(\'is_paginated\', wc_string_to_bool(true));
wc_set_loop_prop(\'page_template\', get_page_template_slug());
wc_set_loop_prop(\'per_page\', $products_per_page);
wc_set_loop_prop(\'total\', $recentProducts->total);
wc_set_loop_prop(\'total_pages\', $recentProducts->max_num_pages);
if($recentProducts) {
do_action(\'woocommerce_before_shop_loop\');
woocommerce_product_loop_start();
foreach($recentProducts->products as $recentProduct) {
$productObject = wc_get_product( $recentProduct );
//if ( !$productObject->is_on_sale() ) {
$post_object = get_post($recentProduct);
setup_postdata($GLOBALS[\'post\'] =& $post_object);
wc_get_template_part(\'content\', \'product\');
//}
}
wp_reset_postdata();
woocommerce_product_loop_end();
do_action(\'woocommerce_after_shop_loop\');
} else {
do_action(\'woocommerce_no_products_found\');
}
以上代码输出过去8天发布的所有产品(这很好)。问题是,我不知道如何在wp\\u get\\u products函数中过滤出可变的销售产品。我尝试过使用meta\\u查询,但这似乎只适用于简单的产品。
我还尝试使用默认的WooCommerce短代码来实现这一点,如下所示:
echo do_shortcode(\'[recent_products per_page="16" orderby="date" paginate="true" on_sale="false"]\');
不幸的是,on\\u sale=”很遗憾;“错误”;似乎不支持。
有人能帮我吗?
谢谢