我在页面上使用了自定义的WooCommerce循环,该页面与CFXdesign博客上的代码独立于archive-product.php中使用的主循环:
<?php
if(!function_exists('wc_get_products')) {
return;
}
$paged = (get_query_var('paged')) ? absint(get_query_var('paged')) : 1;
$ordering = WC()->query->get_catalog_ordering_args();
$ordering['orderby'] = array_shift(explode(' ',
$ordering['orderby']));
$ordering['orderby'] = stristr($ordering['orderby'], 'price') ? 'meta_value_num' : $ordering['orderby'];
$products_per_page = apply_filters('loop_shop_per_page', wc_get_default_products_per_row() * wc_get_default_product_rows_per_page());
$featured_products = wc_get_products(array(
'meta_key' => '_price',
'status' => 'publish',
'limit' => $products_per_page,
'page' => $paged,
'featured' => true,
'paginate' => true,
'return' => 'ids',
'orderby' => $ordering['orderby'],
'order' => $ordering['order'],
));
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', $featured_products->total);
wc_set_loop_prop('total_pages', $featured_products->max_num_pages);
if($featured_products) {
do_action('woocommerce_before_shop_loop');
woocommerce_product_loop_start();
foreach($featured_products->products as $featured_product) {
$post_object = get_post($featured_product);
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');
}
我正在尝试针对销售中的产品进行过滤,但是不确定如何执行。阅读GitHub上的文档时,它在底部提到了自定义参数,但是根据我所做的研究,它已经提到它不支持使用关系运算符的多个元查询(我假设我必须测试简单变量产品既有here,又有{{3}})。
任何人都可以帮我解决这个问题,或者让我知道我是否错误地解决了这个问题?
修改
CFXDesign的开发人员为我提供了我所需要的解决方案,因此我想将其发布在这里,以供其他搜索同一问题的人使用。
$sale_products = wc_get_products(array(
'meta_key' => '_price',
'status' => 'publish',
'limit' => $products_per_page,
'page' => $paged,
'include' => wc_get_product_ids_on_sale(),
'paginate' => true,
'return' => 'ids',
'orderby' => $ordering['orderby'],
'order' => $ordering['order'],
));
wc_get_product_ids_on_sale()
是我所缺少的关键部分