好的,我知道这可能是一个愚蠢的问题,或者你可能认为它被问了十几次。但要么我绝望又错过了一些东西,或者这是一个独特的问题。无论如何,我需要你的帮助。
我的客户希望以字母方式展示她的产品。当我选择默认产品排序“自定义排序+名称”时,一切都很好 但随后出现了一些问题......“排序产品”屏幕中的所有字母顺序都消失了。现在他们都根据他们的“订单”编号显示。
有没有办法让产品按字母顺序返回列表?
我会在“排序产品”中手动完成,但大约有100种产品,我不确定客户端何时会添加新产品,问题不会再出现。
修改
我发现当您在开头使用默认排序(自定义顺序+名称)时,默认情况下按字母顺序显示所有产品,但是一旦您将一个项目移出字母顺序(例如,一个“F”项目放入“A”项目的前面)所有订单搞砸了,并且只按照产品的订单号进行订购
答案 0 :(得分:6)
要扩展@ Vikas_Gautam的答案并修改它以按帖子标题排序,您将执行以下操作:
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'] ) ? woocommerce_clean( $_GET['orderby'] ) : apply_filters( 'woocommerce_default_catalog_orderby', get_option( 'woocommerce_default_catalog_orderby' ) );
if ( 'alphabetical' == $orderby_value ) {
$args['orderby'] = 'title';
$args['order'] = 'DESC';
}
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['alphabetical'] = __( 'Alphabetical' );
return $sortby;
}
答案 1 :(得分:1)
<?php
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'] ) ? woocommerce_clean( $_GET['orderby'] ) : apply_filters( 'woocommerce_default_catalog_orderby', get_option( 'woocommerce_default_catalog_orderby' ) );
if ( 'random_list' == $orderby_value ) {
$args['orderby'] = 'rand';
$args['order'] = '';
$args['meta_key'] = '';
}
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['random_list'] = 'Random';
return $sortby;
}
答案 2 :(得分:1)
为了扩展@ helgatheviking的答案,我尝试了它并按字母顺序(降序)排序,但仅当因为if ( 'alphabetical' == $orderby_value )
条件而在下拉列表中选择了字母顺序选项。 / p>
这是mod,默认按字母顺序升序排序,差异为条件if ('alphabetical' == $orderby_value || 'menu_order' == $orderby_value)
和$args['order'] = 'ASC'
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'] ) ? woocommerce_clean( $_GET['orderby'] ) : apply_filters( 'woocommerce_default_catalog_orderby', get_option( 'woocommerce_default_catalog_orderby' ) );
if ( 'alphabetical' == $orderby_value || 'menu_order' == $orderby_value ) {
$args['orderby'] = 'title';
$args['order'] = 'ASC';
}
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['alphabetical'] = __( 'Alphabetical' );
return $sortby;
}
我正在处理的网站已经对产品进行了分组,因此我确保它们也是按字母顺序排列的......
add_filter( 'woocommerce_grouped_children_args', 'custom_grouped_children_args' );
function custom_grouped_children_args( $args ){
$args['orderby'] = 'title';
$args['order'] = 'ASC';
return $args;
}
答案 3 :(得分:1)
$catalog_orderby_options = apply_filters( 'woocommerce_catalog_orderby', array(
'menu_order' => __( 'Default sorting', 'woocommerce' ),
here -> 'title' => __( 'Sortierung nach Titel, A–Z', 'woocommerce' ),
'popularity' => __( 'Sort by popularity', 'woocommerce' ),
'rating' => __( 'Sort by average rating', 'woocommerce' ),
'date' => __( 'Sort by newness', 'woocommerce' ),
'price' => __( 'Sort by price: low to high', 'woocommerce' ),
'price-desc' => __( 'Sort by price: high to low', 'woocommerce' )
) );
答案 4 :(得分:0)
woocommerce_clean()
已过时,请改用wc_clean()
。
https://docs.woocommerce.com/wc-apidocs/function-woocommerce_clean.html