【问题标题】:WooCommerce products custom loop filtered by an array of SKUsWooCommerce 产品自定义循环由一系列 SKU 过滤
【发布时间】:2021-01-09 17:15:37
【问题描述】:

我有一个数组,其中包含几个产品 SKU 我想展示连接到 SKU 的产品。

我找到了自定义 woocommerce 产品循环,但找不到任何关于如何扩展它的文档。


$skus = array(sku1, sku2, sku3);

$args = array(
  'post_type'      => 'product',
  'post_status'    => 'publish',
  'posts_per_page' => -1,
);
$loop = new WP_Query( $args );

if ( $loop->have_posts() ) {
  while ( $loop->have_posts() ) : $loop->the_post();

    wc_get_template_part( 'content', 'product' );

  endwhile;
}
wp_reset_postdata();

【问题讨论】:

    标签: php wordpress loops woocommerce product


    【解决方案1】:

    你可以试试这个

    $skus = array(sku1, sku2, sku3);
    
    $meta_query = array['relation' => 'OR',];
    
    foreach ($skus as $sku) {
        $meta_query[] = array(
            'key' => '_sku',
            'value' => $sku,
            'compare' => '='
        ),
    }
    
    $args = array(
        'post_type'      => 'product',
        'post_status'    => 'publish',
        'posts_per_page' => -1,
        'meta_query' => $meta_query
    );
    $loop = new WP_Query( $args );
    
    if ( $loop->have_posts() ) {
        while ( $loop->have_posts() ) : $loop->the_post();
    
            wc_get_template_part( 'content', 'product' );
    
        endwhile;
    }
    wp_reset_postdata();
    

    【讨论】:

      【解决方案2】:

      WP_Query 中,您需要使用元查询来获取连接到 SKU 数组的产品。

      代码:

      $skus = array('sku1', 'sku2', 'sku3');
      
      $loop = new WP_Query( array(
          'post_type'      => 'product',
          'post_status'    => 'publish',
          'posts_per_page' => -1,
          'meta_query' => array( array(
              'key'     => '_sku',
              'value'   => $skus,
              'compare' => 'IN',
          ) ),
      ) );
      
      if ( $loop->have_posts() ) :
          while ( $loop->have_posts() ) : $loop->the_post();
              wc_get_template_part( 'content', 'product' );
          endwhile;
      endif;
      wp_reset_postdata();
      

      经过测试并且有效。

      参见WP_Query and custom field post meta parameters 文档

      【讨论】:

      • 您是否有机会告诉我如何根据数组列表对产品进行排序。我想始终保持数组中 sku 的相同排序。例如 array(sku2, sku3, sku1) 应该总是首先显示 sku2,其次是 sku3 .....
      • @CrisC 尝试添加到查询数组:'orderby' => 'meta_value', ... 查看 WP_query 文档中的所有参数:developer.wordpress.org/reference/classes/wp_query
      • 我试过这个但没有用。我做了一个解决方法并使用 wc_get_product_id_by_sku 将 SKU 转换为产品 ID 并使用 orderby' => 'post__in',
      猜你喜欢
      • 2022-11-05
      • 1970-01-01
      • 2018-09-08
      • 2021-04-19
      • 2013-01-30
      • 2018-11-19
      • 2021-09-02
      • 2020-08-29
      • 2016-02-20
      相关资源
      最近更新 更多