woocommerce通过钩子更改产品目录中的默认排序方式

woocommerce产品页中有几种排序方式,大多数主题中都支持更改默认排序方式,一改就所有都改了。但是保不齐哪个分类需要我们设置成另一种为默认排序。

图片[1]-woocommerce通过钩子更改产品目录中的默认排序方式 - KEKC博客-KEKC博客

以下是修改默认排序的方法,如以日期排序:

add_filter('woocommerce_default_catalog_orderby', 'custom_default_catalog_orderby');
function custom_default_catalog_orderby() {
     return 'date'; // 可以使用title和price
}

除了日期(date)还有:popularity、rating、price、price-desc、name(title?)、menu_order等排序方式。

另外还有可能有其他自定义的排序方式,可以搜索woocommerce_catalog_orderby进行查看。

以下这个示例是分类在kekc下时,使用自定义排序方式:

// 删除默认排序方式并添加一个
add_filter( 'woocommerce_catalog_orderby', 'change_default_sorting_options' );
function change_default_sorting_options( $options ){
    unset($options['popularity'], $options['rating'], $options['date' ], $options['price'], $options['price-desc']);

    $menu_order      = __('Catalog Sort Order');
    $options['name'] = __('Sort by Name');

    if ( is_product_category( array( 'kekc') ) ) {
        $options[ 'menu_order2' ] = $menu_order;
    } else {
        $options[ 'menu_order' ] = $menu_order;
    }
    return $options;
}

add_filter( 'woocommerce_default_catalog_orderby', 'custom_default_catalog_orderby' );
function custom_default_catalog_orderby( $orderby ) {
    if (is_product_category( array( 'kekc') ) ) {
        $orderby = 'name'; // sort by latest
    }
    return $orderby;

}

add_filter( 'woocommerce_get_catalog_ordering_args', 'enable_non_default_sorting_by_menu_order' );
function enable_non_default_sorting_by_menu_order( $args ) {
    if ( isset( $_GET['orderby'] ) && 'menu_order2' == $_GET['orderby'] ) {
        $args['orderby']  = 'menu_order title';
    }
    return $args;
}

或者添加一个自定义字段排序?:

add_filter('woocommerce_get_catalog_ordering_args', 'pnp_woocommerce_catalog_orderby');
function pnp_woocommerce_catalog_orderby( $args ) {
	$args['meta_key'] = 'xyzEventsDate';
	$args['orderby'] = date('Y-m-d', strtotime('meta_value_date'));
	$args['order'] = 'DESC';
    return $args;
}

这个也是添加?:

add_filter( 'woocommerce_catalog_orderby', 'misha_add_custom_sorting_options' );
 
function misha_add_custom_sorting_options( $options ){
 
    // $options['title'] = 'Sort alphabetically';
    $options['availability'] = 'Ordenar por Cantidad';
 
    return $options;
 
}

add_filter( 'woocommerce_get_catalog_ordering_args', 'misha_custom_product_sorting' );
 
function misha_custom_product_sorting( $args ) {
 
    // Sort alphabetically
    if ( isset( $_GET['orderby'] ) && 'title' === $_GET['orderby'] ) {
        $args['orderby'] = 'title';
        $args['order'] = 'asc';
    }
 
    // Show products in stock first
    if( isset( $_GET['orderby'] ) && 'availability' === $_GET['orderby'] ) {
        $args['meta_key'] = '_stock';
        $args['orderby'] = array( 'meta_value' => 'DESC' );

    }
 
    return $args;
 
}

还有这个:

add_filter( 'woocommerce_catalog_orderby', 'misha_add_custom_sorting_options' );
 
function misha_add_custom_sorting_options( $options ){
 
    // $options['title'] = 'Sort alphabetically';
    $options['availability'] = 'Ordenar por Cantidad';
 
    return $options;
 
}

add_filter( 'woocommerce_get_catalog_ordering_args', 'misha_custom_product_sorting' );
 
function misha_custom_product_sorting( $args ) {
 
    // Sort alphabetically
    if ( isset( $_GET['orderby'] ) && 'title' === $_GET['orderby'] ) {
        $args['orderby'] = 'title';
        $args['order'] = 'asc';
    }
 
    // Show products in stock first
    if( isset( $_GET['orderby'] ) && 'availability' === $_GET['orderby'] ) {
        echo "entre a orden";
        $args['orderby'] = 'meta_value';
        $args['order'] = 'DESC';
        $args['meta_key'] = '_stock';

    }
 
    return $args;
 
}
© 版权声明
THE END
喜欢就支持一下吧
点赞12 分享
评论 抢沙发
头像
欢迎您留下宝贵的见解!
提交
头像

昵称

取消
昵称常用语 夸夸
夸夸
还有吗!没看够!
表情代码图片

    暂无评论内容