【问题标题】:Add custom attributes to sorting options for sort and order WooCommerce products为排序和订购 WooCommerce 产品的排序选项添加自定义属性
【发布时间】:2021-11-06 07:08:02
【问题描述】:

我希望能够在我的网站上订购产品页面 (woocommerce) 以及经典设置

  • 按人气排序
  • 按平均评分排序
  • 按新鲜度排序
  • 按价格排序:从低到高
  • 按价格排序:从高到低

但所有产品中都存在一个属性

  • 按我的自定义属性排序:从低到高
  • 按我的自定义属性排序:从高到低

我找到了各种关于它的帖子并进行了几次测试......但我不是程序员......我仍然无法解决问题。

我找到了这篇文章

https://docs.woocommerce.com/document/custom-sorting-options-ascdesc/

解释如何添加

  • 随机排序

它可以正常工作 但我不明白,从这段代码开始你需要添加/修改什么来用我的自定义属性替换随机。

我的属性名称是“pa_kj” 它的值是字母数字

提前感谢大家的任何建议

【问题讨论】:

    标签: woocommerce attributes product


    【解决方案1】:

    我在网上找到了这段代码

    https://gist.github.com/bekarice/0df2b2d54d6ac8076f84

    <?php
    /**
     * Adds WooCommerce catalog sorting options using postmeta, such as custom fields
     * Tutorial: http://www.skyverge.com/blog/sort-woocommerce-products-custom-fields/
    **/
    function skyverge_add_postmeta_ordering_args( $sort_args ) {
            
        $orderby_value = isset( $_GET['orderby'] ) ? wc_clean( $_GET['orderby'] ) : apply_filters( 'woocommerce_default_catalog_orderby', get_option( 'woocommerce_default_catalog_orderby' ) );
        switch( $orderby_value ) {
        
            // Name your sortby key whatever you'd like; must correspond to the $sortby in the next function
            case 'location':
                $sort_args['orderby']  = 'meta_value';
                // Sort by meta_value because we're using alphabetic sorting
                $sort_args['order']    = 'asc';
                $sort_args['meta_key'] = 'location';
                // use the meta key you've set for your custom field, i.e., something like "location" or "_wholesale_price"
                break;
                    
            case 'points_awarded':
                $sort_args['orderby'] = 'meta_value_num';
                // We use meta_value_num here because points are a number and we want to sort in numerical order
                $sort_args['order'] = 'desc';
                $sort_args['meta_key'] = 'points';
                break;
            
        }
        
        return $sort_args;
    }
    add_filter( 'woocommerce_get_catalog_ordering_args', 'skyverge_add_postmeta_ordering_args' );
    
    
    // Add these new sorting arguments to the sortby options on the frontend
    function skyverge_add_new_postmeta_orderby( $sortby ) {
        
        // Adjust the text as desired
        $sortby['location'] = __( 'Sort by location', 'woocommerce' );
        $sortby['points_awarded'] = __( 'Sort by points for purchase', 'woocommerce' );
        
        return $sortby;
    }
    add_filter( 'woocommerce_default_catalog_orderby_options', 'skyverge_add_new_postmeta_orderby' );
    add_filter( 'woocommerce_catalog_orderby', 'skyverge_add_new_postmeta_orderby' );
    

    但它不适用于最新版本的 Woocommerce,它总是返回未找到产品的页面。

    有经验的可以推荐修改的代码吗?

    再次感谢

    【讨论】:

      猜你喜欢
      • 2019-05-04
      • 2018-11-28
      • 1970-01-01
      • 2020-11-01
      • 1970-01-01
      • 2016-12-20
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多