我想使用自定义字段对常规产品页面上的项目进行排序。我正在使用一些代码,它可以很好地工作,因为它可以找到我创建的字段,并且所有内容都根据该字段中的值进行排序。
我的问题是我只想根据那个值显示项目,而不是先显示然后排序的所有项目。
我正在使用的基本代码如下:
function cw_add_postmeta_ordering_args( $args_sort_cw ) {
$cw_orderby_value = isset( $_GET['orderby'] ) ? wc_clean( $_GET['orderby'] ) :
apply_filters( 'woocommerce_default_catalog_orderby', get_option( 'woocommerce_default_catalog_orderby' ) );
switch( $cw_orderby_value ) {
case 'location_one':
$args_sort_cw['orderby'] = 'meta_value_num';
$args_sort_cw['order'] = 'desc';
$args_sort_cw['meta_key'] = 'number_location';
break;
case 'location_two':
$args_sort_cw['orderby'] = 'meta_value_num';
$args_sort_cw['order'] = 'asc';
$args_sort_cw['meta_key'] = 'number_location';
break;
}
return $args_sort_cw;
}
add_filter( 'woocommerce_get_catalog_ordering_args', 'cw_add_postmeta_ordering_args' );
function cw_add_new_postmeta_orderby( $sortby ) {
$sortby['location_one'] = __( 'Sort By Location 1', 'woocommerce' );
$sortby['location_two'] = __( 'Sort By Location 2', 'woocommerce' );
return $sortby;
}
add_filter( 'woocommerce_default_catalog_orderby_options', 'cw_add_new_postmeta_orderby' );
add_filter( 'woocommerce_catalog_orderby', 'cw_add_new_postmeta_orderby' );
是否有一种按值排序的方法,因此对于搜索自定义字段的每种情况,我都可以执行这样的操作? :
$args_sort_cw['orderby'] = 'meta_value_num';
$args_sort_cw['order'] = 'asc';
$args_sort_cw['meta_key'] = 'number_location';
$args_sort_cw['meta_value'] = 1;