检索具有特定属性和类别的产品-WooCommerce

时间:2017-07-07 作者:Chuck Norris

我正在尝试获取具有特定属性和价值的产品的列表/计数。使用WooCommerce插件管理和设置产品。

每个产品都有相同的变量集,产品被分配到一个类别,我只需要检索具有特定属性(即“newyork”)且库存数量小于(即“20”)的产品

每个产品变体都设置为管理库存,但产品本身并不希望有意义。我目前的问题是WordPress查询根本没有检查变体名称或库存。

任何帮助都将不胜感激。

<?php 

$args= array(
  \'post_type\'           => array(\'product\', \'product_variation\'),
  \'post_status\'         => \'publish\',
  \'posts_per_page\'  => -1,
  \'meta_query\'          => array(
    array(
      \'key\'         => \'_stock\',
      \'value\'       => 20,
      \'compare\'     => \'<\'
    )
  ),
  \'tax_query\'           => array(
    array(
      \'taxonomy\'        => \'product_cat\',
      \'field\'           => \'slug\',
      \'terms\'           => array(\'cat1\', \'cat2\', \'cat3\'),
      \'operator\'        => \'IN\',
    ),
    array(
      \'taxonomy\'        => \'pa_regions\',
      \'field\'           => \'slug\',
      \'terms\'           => \'newyork\',
      \'operator\'        => \'IN\'
    ),

  )
);

$loop = new WP_Query($args);
$post_count = array();

while($loop->have_posts()) : $loop->the_post();
  global $product; ?>

  <pre style="background: #1c1c1b; color: #f7e700">
    <?php $post_count[] = $product->ID ;?>
  </pre>

<?php endwhile; ?>

$total = count($post_count); 

2 个回复
SO网友:Adrian

您应该使用wc_get_products and a custom filter 用于添加特定查询。

Example

我想找到包含特定属性值的产品;表过滤器;。

  $args = array(
            \'table-filter\' => array(1,2,3)
        );
  $products = wc_get_products($args);
我有一个过滤器:

add_filter(\'woocommerce_product_data_store_cpt_get_products_query\', \'my_handle_custom_query_var\', 10, 2);

function my_handle_custom_query_var($query, $query_vars) {
    if (!empty($query_vars[\'table-filter\'])) {
        $query[\'tax_query\'][] = array(
            \'taxonomy\' => \'pa_table-filter\',
            \'field\'    => \'term_id\', //default
            \'terms\'    => $query_vars[\'table-filter\'],
            \'operator\' => \'IN\',
        );
    }
    return $query;
}
Hint: 从WooCommerce生成的属性分类法始终以“";pa\\uquot;,因此,如果您将slug属性设置为;表过滤器“;,分类法为;pa\\U表格过滤器;。

SO网友:Minh Dao

我认为您在“税务查询”方面有问题。如果要在“tax\\u query”上查询数组,则需要按格式飞行wordpress

并简要说明:在“tax\\u query”中需要“relation”:

 \'tax_query\'           => array(
   \'relation\'=>\'AND\', // \'AND\' \'OR\' ...
    array(
      \'taxonomy\'        => \'product_cat\',
      \'field\'           => \'slug\',
      \'terms\'           => array(\'cat1\', \'cat2\', \'cat3\'),
      \'operator\'        => \'IN\',
    ),
    array(
      \'taxonomy\'        => \'pa_regions\',
      \'field\'           => \'slug\',
      \'terms\'           => \'newyork\',
      \'operator\'        => \'IN\'
    )

结束

相关推荐

使用新的WP-Query()从循环中过滤后期格式;

嗨,我目前正在为我的博客构建一个主题。下面的代码指向最新的帖子(特色帖子)。因为这将有一个不同的风格比所有其他职位。然而我想过滤掉帖子格式:链接使用我在循环中定义的WP查询,因为它给我带来了更多的灵活性。我该怎么做呢? <?php $featured = new WP_Query(); $featured->query(\'showposts=1\'); ?> <?php while ($featured->have_post