Php 由于从woocommerce 3中删除了筛选器“woocommerce\u grouped\u children\u args”,因此使用orderby分组产品子项的替代方法

Php 由于从woocommerce 3中删除了筛选器“woocommerce\u grouped\u children\u args”,因此使用orderby分组产品子项的替代方法,php,wordpress,woocommerce,Php,Wordpress,Woocommerce,在Wordpress Woocommerce中,我创建了一个分组产品,其中包含许多子产品(子产品)。我试着到处搜索,但我找不到一个有效的解决方案,如何按SKU或产品名称进行订购。它的orderby似乎只由“菜单顺序”生成。虽然我在这些多个分组的产品中有30多个子产品,但按菜单顺序值订购它们将是非常浪费时间的 我尝试了以下代码,但它似乎在WC2.5中有效,但在3.0+中无效 add_filter( 'woocommerce_grouped_children_args', 'so_22661392

在Wordpress Woocommerce中,我创建了一个分组产品,其中包含许多子产品(子产品)。我试着到处搜索,但我找不到一个有效的解决方案,如何按SKU或产品名称进行订购。它的orderby似乎只由“菜单顺序”生成。虽然我在这些多个分组的产品中有30多个子产品,但按菜单顺序值订购它们将是非常浪费时间的

我尝试了以下代码,但它似乎在WC2.5中有效,但在3.0+中无效

add_filter( 'woocommerce_grouped_children_args', 
'so_22661392_grouped_children_args' );

function so_22661392_grouped_children_args( $args ){

 $args['meta_key'] = 'sku';
 $args['orderby'] = 'meta_value';
 $args['order'] = 'ASC'; 
 return $args;

 }
我也在谷歌上搜索解释,但找不到任何解释。我试图清除瞬变,但效果不好:

  WooCommerce>System Status>Tools>Clear Transients
分组后的产品可以在上看到。html表应该与下面的子项匹配,但它不匹配。儿童SKU为“563/9005”、“567/9005”等

任何帮助都将不胜感激

希望我能正确理解这个问题:

如果我们已经覆盖了模板文件
single product/add to cart/grouped.php
,那么我们可以使用例如:

if( $grouped_products )
    usort( $grouped_products, 'wc_products_array_orderby_title' );
按标题而不是默认菜单顺序对分组产品进行排序

我们还可以注销:

add_action( 'woocommerce_grouped_add_to_cart', 'woocommerce_grouped_add_to_cart', 30 );
而是使用自定义回调

作为最后手段,您可以覆盖
woocommerce\u group\u add\u to\u cart()
功能,例如在插件中,以更改菜单顺序

它的定义是:

if ( ! function_exists( 'woocommerce_grouped_add_to_cart' ) ) {

   function woocommerce_grouped_add_to_cart() {
       global $product;

       $products = array_filter( array_map( 'wc_get_product', $product->get_children() ) );

       if ( $products ) {
            usort( $products, 'wc_products_array_orderby_menu_order' );

       wc_get_template( 'single-product/add-to-cart/grouped.php', array(
           'grouped_product'    => $product,
           'grouped_products'   => $products,
           'quantites_required' => false,
       ) );
    }
  }
}

例如,可以使用
wc\u products\u array\u orderby\u title

该过滤器已从3.0中删除,未记录。在GitHub上打开一个问题。我发布了一些东西,你也应该:打开一个新的ticketan向代码中添加这个orderby过滤器的方法同时??不,过滤器不存在了,所以你必须编写自己的函数。我会发帖子到github回购,看看有什么反应。他们通常有助于指出正确的方向。我增加了一笔赏金并更改了标题。谢谢。这个被删除的过滤器在添加到WooCommerce时在这里进行了详细说明,然后它就没有文档记录,并且在没有关于如何替换它的提示的情况下被删除。分组产品是主产品,在产品单页上有子产品。我想一个合适的方法是为开发人员使用一个弃用通知,例如。您是否正在寻找订购
$grouped\u产品
阵列的方法?我确实研究了动态的
woocommerce\u product\u get\u children
过滤器(我在类的深处用
get\u prop()
方法;-)但是它只在
wc\u products\u array\u orderby\u菜单\u order
排序
$grouped\u产品之前应用@Christina如果没有相关文档,请联系开发人员。他们的回答非常及时。