Woocommerce:以字母顺序显示产品

时间:2014-01-31 13:28:12

标签: wordpress woocommerce

好的,我知道这可能是一个愚蠢的问题,或者你可能认为它被问了十几次。但要么我绝望又错过了一些东西,或者这是一个独特的问题。无论如何,我需要你的帮助。

我的客户希望以字母方式展示她的产品。当我选择默认产品排序“自定义排序+名称”时,一切都很好 但随后出现了一些问题......“排序产品”屏幕中的所有字母顺序都消失了。现在他们都根据他们的“订单”编号显示。

有没有办法让产品按字母顺序返回列表?

我会在“排序产品”中手动完成,但大约有100种产品,我不确定客户端何时会添加新产品,问题不会再出现。

修改
我发现当您在开头使用默认排序(自定义顺序+名称)时,默认情况下按字母顺序显示所有产品,但是一旦您将一个项目移出字母顺序(例如,一个“F”项目放入“A”项目的前面)所有订单搞砸了,并且只按照产品的订单号进行订购

5 个答案:

答案 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;
}

查看法典WP_Query sort parameters

答案 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