【问题标题】:Woocommerce: Show Products in Alphabetic orderWoocommerce:按字母顺序显示产品
【发布时间】:2018-09-22 01:20:07
【问题描述】:

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

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

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

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

编辑
我发现当您在开始时使用默认排序(自定义顺序+名称)时,所有产品默认按字母顺序显示,但是一旦您将一个项目移出字母顺序(例如放置一个“F”项目“A”项目的前面)所有订单都搞砸了,只按照产品的订单号订购

【问题讨论】:

  • 在您的本地尝试 woocommerce,woocommerce 中有默认排序选项,按字母顺序下拉您可以使用该选项
  • 谢谢 Vickey,但不确定您的意思是我的本地人。我正在使用的默认排序选项。它运行良好,直到我认为我们在“排序产品”中声明了移动产品。
  • 您是否检查过此 WooCommerce 管理员>>设置>>目录>>当您将“默认产品排序”设置为默认值时,它们将显示在您为每个产品设置的排名中。跨度>
  • 我有网站的阶段版本,当所有产品按字母顺序排列时,我将一个项目从列表中间移到顶部,所有字母顺序都消失了!似乎这就是所有问题所在。
  • 你试过我下面贴的代码吗

标签: wordpress woocommerce


【解决方案1】:

要扩展@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 的 Codex。

【讨论】:

    【解决方案2】:
    <?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;
    }
    

    【讨论】:

    • 随心所欲使用顺序
    • 谢谢维姬!我现在试试这个剪断。但是我应该使用什么参数来进行字母排序?在这里我看到代码只“随机”选择
    • 我试过你推荐的插件。但是wordpress警告我一些“通知”(不推荐使用:不推荐使用通过引用分配new的返回值......)并且还警告我插件已经生成了很多额外的内容。不确定我是否理解。但它有效......我只是不确定我是否可以信任它:) 最近我只使用来自 codecanyon 的高级插件来减少任何问题
    • 是的,我理解,但 wordpress suppert 团队总是通知这一点,他们总是删除所有有缺陷的项目,如果有的话,由于安全原因
    【解决方案3】:

    为了扩展@helgatheviking 的答案,我尝试了它并按(降序)字母顺序排序,但前提是由于if ( 'alphabetical' == $orderby_value ) 条件而在下拉菜单中选择了“字母顺序”选项。

    这是一个默认按字母升序排序的模组,区别在于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;
    }
    

    【讨论】:

      【解决方案4】:
      $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' )
          ) );
      

      【讨论】:

        【解决方案5】:

        woocommerce_clean() 已弃用,请改用wc_clean()

        https://docs.woocommerce.com/wc-apidocs/function-woocommerce_clean.html

        【讨论】:

          猜你喜欢
          • 2015-07-15
          • 1970-01-01
          • 2019-05-31
          • 2018-12-09
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2017-05-02
          • 2019-12-16
          相关资源
          最近更新 更多