当前位置: 首页 > 知识库问答 >
问题:

在Woocommerce中按描述顺序对产品进行排序

黄泰宁
2023-03-14

我在函数中编写了这段代码。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'] = 'date';
        $args['order'] = 'desc';
        $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'] = 'DESC SORT';
    return $sortby;
}

我正在尝试按Desc对产品进行排序,但产品仍然默认排序(ASC)。

如何按描述对它们进行排序?

共有3个答案

钱欣然
2023-03-14

此代码应添加到函数中。主题的php

add_filter('woocommerce_default_catalog_orderby', 'custom_default_catalog_orderby');

function custom_default_catalog_orderby() {
     return 'date'; // Can also use title and price
}
俞飞鸣
2023-03-14

您需要首先决定您要对价格标题等进行排序的字段。但是我已经写了所有可能的方法,你可以使用它,

添加过滤器('woocommerce\u get\u catalog\u ordering\u args'、'custom\u query\u sort\u args');

函数自定义\查询\排序\参数(){

    // Sort by and order
    $current_order = ( isset( $_SESSION['orderby'] ) ) ? $_SESSION['orderby'] : apply_filters( 'woocommerce_default_catalog_orderby', get_option( 'woocommerce_default_catalog_orderby' ) );

    switch ( $current_order ) {
        case 'date' :
            $orderby = 'date';
            $order = 'desc';
            $meta_key = '';
        break;
        case 'price' :
            $orderby = 'meta_value_num';
            $order = 'asc';
            $meta_key = '_price';
        break;
        case 'title' :
            $orderby = 'meta_value';
            $order = 'asc';
            $meta_key = '_woocommerce_product_short_title';
        break;
        default :
            $orderby = 'menu_order title';
            $order = 'asc';
            $meta_key = '';         
        break;
    }

    $args = array();

    $args['orderby']        = $orderby;
    $args['order']          = $order;

    if ($meta_key) :
        $args['meta_key'] = $meta_key;
    endif;

    return $args;

}

于鸿博
2023-03-14

您可以通过以下方式使用挂接在woocommerce\u product\u query操作挂接中的自定义函数:

add_action( 'woocommerce_product_query', 'default_catalog_ordering_desc', 10, 2 );
function default_catalog_ordering_desc( $q, $query ){
    if( $q->get( 'orderby' ) == 'menu_order title' )
        $q->set( 'order', 'DESC' );
}

代码functions.php活动子主题(或活动主题)的文件或任何插件文件中。

测试和工作。

 类似资料:
  • 是否有一种方法可以修改WooCommerce产品的短码,以便根据产品SKU的列表订购? 搜索引擎向页面发送带有SKU列表的帖子。页面应该按照http post的相同顺序显示产品。 php和mysql select示例(类似这样的代码在我的旧商店系统中工作,在那里我可以使用SQL语法): 如何使用woocommerce的products shortcode执行“OrderBy”,或者是否有更好的方法

  • 我对give all products有wp_查询请求,需要对这两个字段进行排序:按类别 在简单查询中: 在全局$product中,存在字段“菜单\订单”,但不存在字段“产品\目录”。 我可以用wp_query吗?或者也许存在另一种方法?

  • 问题内容: 如何按自定义顺序排序? 输入: 预期结果: 我的python代码现在如下: 问题答案: 使之间的映射,,0,1,2 并将映射用于排序键:

  • 本文向大家介绍在Python中按字典顺序对单词进行排序,包括了在Python中按字典顺序对单词进行排序的使用技巧和注意事项,需要的朋友参考一下 按字典顺序对单词进行排序意味着我们要首先按单词的第一个字母排列它们。然后,对于第一个字母相同的单词,我们将它们按第二个字母排列在该组中,依此类推,就像在语言的词典中一样(不是数据结构)。 Python有2个函数,按照这种类型的顺序进行排序和排序,让我们看看

  • 我正在尝试按年份降序(不是完整日期,只有年份)然后按SKU升序对特定类别页面的产品进行排序。 这个想法是按年份对产品进行分组,在这个组中,按sku对它们进行排序。 我找到了一种针对特定类别的方法,以及通过提升SKU订购产品的代码。因为我是新的PHP我仍然在努力找出如何按年排序(再次,不是完整的日期)和如何 下面是我正在使用的代码: 我还发现留档(https://developer.wordpres

  • 问题内容: 我得到了一个数组(请参阅下面的数组中的一个对象),我需要使用JavaScript按名字排序。我该怎么做? 问题答案: 假设您有一个数组。您可以使用并传递一个接受两个参数并进行比较的函数(比较器) 它应该返回 如果第一个参数小于第二个参数,则为负数(应在结果数组的第二个参数之前放置) 如果第一个参数较大,则为正数(应放在第二个参数之后) 如果这两个元素相等,则为0。 在我们的情况下,如果