【问题标题】:Woocommerce how to exclude products with no price set in low to high price sortWoocommerce如何在从低到高的排序中排除没有设置价格的产品
【发布时间】:2021-04-29 14:02:23
【问题描述】:

我正在尝试制作一个自定义产品排序选项,它排除了 POA 的产品,客户通过不为它们设置价格来做到这一点。

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'] ) ? wc_clean( $_GET['orderby'] ) : apply_filters( 'woocommerce_default_catalog_orderby', get_option( 'woocommerce_default_catalog_orderby' ) );

  if ('price_nopoa_asc' == $orderby_value) {

    $args = array(
        'meta_key'   => '_price',
        'orderby'    => 'meta_value_num',
        'order'      => 'ASC',
        'meta_compare' => '!=',
        'meta_value'   => '',
        'meta_type'   => 'numerical',
    );

}

    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['price_nopoa_asc'] = 'Sort by Price: products Low to High';
    return $sortby;
}

除了忽略没有设置价格的产品之外,其他所有方法都有效。

我是否以错误的方式检查空白字段?

【问题讨论】:

    标签: wordpress sorting woocommerce price woocommerce-theming


    【解决方案1】:

    试试下面的代码:

    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'] ) ? wc_clean( $_GET['orderby'] ) : apply_filters( 'woocommerce_default_catalog_orderby', get_option( 'woocommerce_default_catalog_orderby' ) );
    
      if ('price_nopoa_asc' == $orderby_value) {
    
        $args = array(
            'meta_key'   => '_price',
            'orderby'    => 'meta_value_num',
            'order'      => 'ASC',
            'meta_query' => array(
                array(
                 'key' => '_price', # add your key here for comparison
                 'compare' => '!=',
                 'value'   => '' # if the empty string didn't work, try changing it to zero
                );
            );
        );
    
    }
    
        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['price_nopoa_asc'] = 'Sort by Price: products Low to High';
        return $sortby;
    }
    

    【讨论】:

      猜你喜欢
      • 2017-03-24
      • 2020-12-28
      • 2021-10-06
      • 1970-01-01
      • 1970-01-01
      • 2016-04-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多