woocommerce产品页中有几种排序方式,大多数主题中都支持更改默认排序方式,一改就所有都改了。但是保不齐哪个分类需要我们设置成另一种为默认排序。
以下是修改默认排序的方法,如以日期排序:
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
暂无评论内容