如何按自定义字段中包含的值对WooCommerce产品进行排序?

时间:2019-07-04 20:01:09

标签: wordpress sorting woocommerce metadata custom-fields

我想使用自定义字段对常规产品页面上的项目进行排序。我正在使用一些代码,它可以很好地工作,因为它可以找到我创建的字段,并且所有内容都根据该字段中的值进行排序。

我的问题是我只想根据那个值显示项目,而不是先显示然后排序的所有项目。

我正在使用的基本代码如下:

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;

0 个答案:

没有答案