我有此代码,需要按价格获取所有产品订单:
我正在尝试按价格对我的产品进行排序,但是效果不佳。
这是我获取产品的代码,如果我不使用“ orderby”,效果很好。
$args = array(
'post_type'=> 'product',
'meta_key' => 'price',
'orderby' => 'meta_value_num',
'order' => 'ASC'
);
$wooCommerceargs = new WP_Query( $args );
但是问题是没有任何产品展示!
答案 0 :(得分:1)
首先,请勿使用WP_Query()
或get_posts()
。从WooCommerce文档中:
wc_get_products和WC_Product_Query提供了一种检索产品的标准方法,该方法安全使用并且不会因将来的WooCommerce版本中的数据库更改而中断。随着数据移向自定义表以提高性能,构建自定义WP_Queries或数据库查询可能会破坏WooCommerce未来版本中的代码。
第二,您不能直接在查询中按价格订购。获取您的产品,然后调用wc_products_array_orderby()
函数。
$args = array(); // Optional arguments
$products = wc_get_products( $args );
$ordered = wc_products_array_orderby( $products, 'price', 'ASC' );
答案 1 :(得分:0)
根据 @Christian Lescuyer 答案使用WC_Query。
第二,您不能直接在查询中按价格订购。拿你的 产品,然后调用
可以,WC_Query
$args = [];
$query = new WC_Query( $args );
$query->get_catalog_ordering_args( 'price' );
$query->get_products()
$query->remove_ordering_args();