4

我正在为 woocommerce 编写定价表插件。用户插入带有 woocommerce 产品类别 id 的简码,在更新页面后,用户可以看到一个包含产品名称和价格列表的表格。
我怎样才能获得带有其类别 ID 的产品列表?!
在下面的代码中,$pid是用户在简码中输入的内容,“object_id”是 wp_posts 表中每个产品的 id。

<?php
    $products = $wpdb->get_results("SELECT object_id FROM {$wpdb->term_relationships}
                                      WHERE term_taxonomy_id = " . $pid);
    if(!empty($products))
    {
        foreach($products as $product)
        {
            //the code
        }
    }
?>  

提前致谢。

4

3 回答 3

6
 $args = array(
    'post_status' => 'publish',
    'tax_query' => array(
         'taxonomy' => 'product_cat',
         'field'    => 'term_id',
         'terms'     =>  '[ category id here ]', // When you have more term_id's seperate them by komma.
         'operator'  => 'IN'
         )
    );
    $the_query = wp_query($args);

未经测试,但应该可以工作

于 2013-11-06T18:09:53.057 回答
3

通过使用get_posts wordpress 功能

按类别获取所有 WooCommerce产品详细信息

$all_products = get_posts( array(
    'post_type' => 'product',
    'numberposts' => -1,
    'post_status' => 'publish',
    'tax_query' => array(
        array(
            'taxonomy' => 'product_cat',
            'field' => 'slug',
            'terms' => 'your_product_category', /*category name*/
            'operator' => 'IN',
            )
        ),
    ));
    echo var_dump($all_products);

按类别获取所有 WooCommerce产品 ID

$all_ids = get_posts( array(
  'post_type' => 'product',
  'numberposts' => -1,
  'post_status' => 'publish',
  'fields' => 'ids',
  'tax_query' => array(
      array(
          'taxonomy' => 'product_cat',
          'field' => 'slug',
          'terms' => 'your_product_category', /*category name*/
          'operator' => 'IN',
          )
       ),
   ));
   foreach ( $all_ids as $id ) {
       echo $id;
   }

经过测试并且工作正常。

于 2020-09-16T10:42:06.187 回答
1

上述(已接受)答案对我(版本 4.9.8)不起作用(结果超出应有的结果)

 'tax_query' => array(
     array(
        'taxonomy' => 'product_cat',
        'field'    => 'term_id',
        'terms'     =>  [$request['id']],
        'operator'  => 'IN'
      )
  )

以上工作。我不是一个真正的 Wordpress 人,但我猜这是一个版本的东西......

于 2018-10-08T10:25:59.800 回答