将自定义产品排序设置为默认的Woocommerce排序选项

在Woocommerce中,我使用了以下代码,该代码按修改的日期向商店目录添加了自定义排序选项。

add_filter( 'woocommerce_get_catalog_ordering_args', 'enable_catalog_ordering_by_modified_date' );
function enable_catalog_ordering_by_modified_date( $args ) {
    if ( isset( $_GET['orderby'] ) ) {
        if ( 'modified_date' == $_GET['orderby'] ) {
            return array(
                'orderby'  => 'modified',
                'order'    => 'DESC',
            );
        }
    }
    return $args;
}

add_filter( 'woocommerce_catalog_orderby', 'add_catalog_orderby_by_modified_date' );
function add_catalog_orderby_by_modified_date( $orderby_options ) {
    // Rename 'menu_order' label
    $orderby_options['modified_date'] = __("Sort by modified date", "woocommerce");

    return $orderby_options ;
}

从这个答案:在Woocommerce产品中按修改日期添加排序

我想将该自定义排序选项作为默认排序选项,同时将默认woocommerce选项(按菜单顺序)保留为第二个选项。

如何将这种排序设置为woocommerce默认设置?

LoicTheAztec

您将使用以下与版本稍有不同的版本代码,以及一些附加的挂钩函数:

add_filter( 'woocommerce_get_catalog_ordering_args', 'enable_catalog_ordering_by_modified_date' );
function enable_catalog_ordering_by_modified_date( $args ) {
    if ( isset( $_GET['orderby'] ) ) {
        if ( 'modified_date' == $_GET['orderby'] ) {
            return array(
                'orderby'  => 'modified',
                'order'    => 'DESC',
            );
        }
        // Make a clone of "menu_order" (the default option)
        elseif ( 'natural_order' == $_GET['orderby'] ) {
            return array( 'orderby'  => 'menu_order title', 'order' => 'ASC' );
        }
    }
    return $args;
}

add_filter( 'woocommerce_catalog_orderby', 'add_catalog_orderby_modified_date' );
function add_catalog_orderby_modified_date( $orderby_options ) {
    // Insert "Sort by modified date" and the clone of "menu_order" adding after others sorting options
    return array(
        'modified_date' => __("Sort by modified date", "woocommerce"),
        'natural_order' => __("Sort by natural shop order", "woocommerce"), // <== To be renamed at your convenience
    ) + $orderby_options ;

    return $orderby_options ;
}


add_filter( 'woocommerce_default_catalog_orderby', 'default_catalog_orderby_modified_date' );
function default_catalog_orderby_modified_date( $default_orderby ) {
    return 'modified';
}

add_action( 'woocommerce_product_query', 'product_query_by_modified_date' );
function product_query_by_modified_date( $q ) {
    if ( ! isset( $_GET['orderby'] ) && ! is_admin() ) {
        $q->set( 'orderby', 'modified' );
        $q->set( 'order', 'DESC' );
    }
}

代码进入您的活动子主题(或活动主题)的function.php文件中。经过测试和工作。

在此处输入图片说明

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

如何将自定义字段添加到woocommerce产品属性

将自定义字段添加到woocommerce产品中的特定类别

如何在Postgres中为联合查询设置自定义排序顺序

在Wordpress中,如何将自定义帖子类型的默认管理排序顺序设置为自定义列?

Android:将自定义值设置为NumberPicker

在WooCommerce中以编程方式添加自定义设置选项卡以管理产品数据

如果产品在WooCommerce中缺货,则将自定义类添加到链接

将自定义产品计算价格添加到Woocommerce购物车

自定义元值排序在WooCommerce产品中不起作用

将自定义字段添加到产品设置运送选项卡,并在WooCommerce的其他信息选项卡上显示值

在Woocommerce中将自定义多选字段添加到管理产品选项设置

将自定义字体设置为微调器

从产品类别和自定义meta_key对Woocommerce产品进行排序

在WooCommerce中重新排序和自定义产品尺寸格式输出

通过WP_Query中的自定义Woocommerce产品排序来排序

将自定义产品元数据传递到Woocommerce 3中的订单

将自定义chipDrawable背景设置为Chip

在“ Woocommerce设置”中为客户列表内容添加自定义“设置”选项卡

如何将自定义委托设置为UITableViewController?

将自定义域设置为“主要”的好处

将自定义产品元数据传递到Woocommerce 4中的订单

将自定义产品价格乘以WooCommerce购物车中的数量

如何在altair中将自定义颜色主题设置为默认值?

是否可以将自定义服务帐户设置为(ADC)应用程序默认凭据?

Woocommerce变量订阅自定义字段复选框设置为默认未选中

Magento自定义排序选项

STL设置自定义排序

如何在Rails中将自定义环境设置为默认环境?

在OpenCv中将自定义模型设置为CvSVM