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

WooCommerce:按年份(不是日期)和sku对产品类别页面进行排序

段干玺
2023-03-14

我正在尝试按年份降序(不是完整日期,只有年份)然后按SKU升序对特定类别页面的产品进行排序。

这个想法是按年份对产品进行分组,在这个组中,按sku对它们进行排序

我找到了一种针对特定类别的方法,以及通过提升SKU订购产品的代码。因为我是新的PHP我仍然在努力找出如何按年排序(再次,不是完整的日期)和如何

下面是我正在使用的代码:

if( is_product_category('19')) {
        
    $args['meta_key'] = '_sku';
    $args['orderby'] = 'meta_value';
    $args['order'] = ‘ASC’; 
    return $args;
}

我还发现留档(https://developer.wordpress.org/reference/classes/wp_query/#order-orderby-parameters)与一个例子,按标题和menu_order不同的排序顺序,但我不知道如何整合这在以前的代码

$args = array( 'orderby' => array( 'title' => 'DESC', 'menu_order' => 'ASC' ) );
$query = new WP_Query( $args );

任何帮助将不胜感激,感谢阅读我!

朱利安

使现代化

我试图解决我的问题,我找到了一种方法,这不是100%令人满意,但仍然有效。我明白了如何用不同的排序顺序链接两个不同的订单集,但我仍然不知道如何按年订购。

作为一种方法,我使用«

add_filter('woocommerce_get_catalog_ordering_args', 'test_woocommerce_catalog_orderby');
function test_woocommerce_catalog_orderby( $args ) {
    
    if( is_product_category('19')) {
        
    $args['meta_key'] = '_sku';
    $args['orderby']  = ['menu_order' => 'DESC', 'meta_value' => 'ASC'];
    return $args;
    } }     

它首先通过menu_order字段(降序)对我的产品进行排序,然后通过升序sku对具有相同menu_order的所有产品进行排序。

它完全是我想要的,但是手动填充每个产品的menu_order有点乏味,所以我仍然为更好的解决方案敞开大门!

再次感谢

共有1个答案

邹齐智
2023-03-14

这会解决你的问题。在函数中添加以下函数。php活动父/子主题。

function filter_products_by_year_sku( $q ) {
    if(!is_product_category( 'shirts' )) return; // Run this only if we are on shirts category
        $query = $q->get('query');
        $meta_query = $q->get( 'meta_query' );
        $meta_query[] = array(
            'key'       => '_sku',
        );
        $q->set( 'year', date('Y') );
        $q->set( 'meta_query', $meta_query);
        $q->set( 'orderby', 'meta_value date' );
        $q->set( 'order', 'DESC' ); // by default is ASC so comment if you want ASC.
}
add_action( 'woocommerce_product_query', 'filter_products_by_year_sku' );
 类似资料:
  • 我在WooCommerce的后端有一个自定义元框。目前,我已将其设置为显示单个产品页面中的一些数据。 我用过

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

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

  • 对于我的WC产品页面,我需要向body标记添加一个类,以便执行一些自定义样式。这是我为这个创建的函数。。。 …但是我怎么才能拿到猫的身份证呢?

  • 在函数的单个产品页面中获取产品的SKU时,我遇到了很多麻烦。php。我有多个单一产品页面,我希望根据产品显示不同的文本。我已经创建了一个子主题,我正在处理函数。php文件。我不熟悉wordpress和编辑主题,所以我还不太了解操作顺序。我能够让代码循环运行,并为所有产品提供所有SKU,但这与我所处的实际页面无关。 我试过很多东西。常见的解决方案似乎是: 但那不起作用。由于某些原因,$producs

  • 我在我的活动主题文件: 我正在尝试按Desc对产品进行排序,但产品仍然默认排序(ASC)。 如何按描述对它们进行排序?