到目前为止,我已经发现我需要使用以下钩子来更改WooCommerce产品查询:
add_action( 'woocommerce_product_query', 'xxxx_product_query' );
function xxxx_product_query( $q ){
...do something here...
}
但我该怎么做:
1.使查询随机排序所有产品;
2.按顺序保存随机分拣的产品30天,然后在30天到期后再次更改;
3.使用自定义字段“_new”的所有产品始终出现在查询的开头(这些不应随机排序)。
提前感谢您的帮助!
答案 0 :(得分:-1)
您可以使用functions.php文件中的此代码,在“产品/显示”标签下的WooCommerce设置页面中为默认排序顺序组合框添加额外的排序选项。
add_filter( 'woocommerce_get_catalog_ordering_args', 'custom_woocommerce_get_catalog_ordering_args' );
function custom_woocommerce_get_catalog_ordering_args( $args ) {
$orderby_value = isset( $_GET['orderby'] ) ? woocommerce_clean( $_GET['orderby'] ) : apply_filters( 'woocommerce_default_catalog_orderby', get_option( 'woocommerce_default_catalog_orderby' ) );
if ( 'random_list' == $orderby_value ) {
$args['orderby'] = 'rand';
$args['order'] = '';
$args['meta_key'] = '';
}
return $args;
}
add_filter( 'woocommerce_default_catalog_orderby_options', 'custom_woocommerce_catalog_orderby' );
add_filter( 'woocommerce_catalog_orderby', 'custom_woocommerce_catalog_orderby' );
function custom_woocommerce_catalog_orderby( $sortby ) {
$sortby['random_list'] = 'Random';
return $sortby;
}
为什么使用“_new”自定义字段?您可以只使用添加产品的时间戳来确定产品是否是新产品。