我如何检查该类别是否有产品或空wordpress?

问题描述 投票:0回答:2

大家好,我想知道具有某些自定义属性的特定类别是否有产品,但我不知道如何使用此功能来检查它是否有

 $isset_products_in_category = new WP_Query(
      array(
        'post_type' => 'product',
        'posts_per_page' => -1,
        'relation'=>'AND',
        'tax_query'           => array(
          array(
            'taxonomy'        => 'product_cat',
            'field'           => 'term_id',
            'terms'           => '5',
            'operator'        => 'IN',
          ),
          array(
            'taxonomy'        => 'pa_color',
            'field'           => 'term_id',
            'operator'        => 'IN',
            'terms' => '2',
          ),
        ),
        'ignore_stickie_posts' => true,
        'fields' => 'ids',
      )
    );
php wordpress wordpress-theming custom-wordpress-pages wordpress-rest-api
2个回答
0
投票
  1. 'relation' => 'AND'
    应该是
    tax_query
    WP_Query()
    数组的一部分(它定义了 tax_query
     中数组之间的 
    关系)。
  2. 您没有对查询结果执行任何操作。您可以检查计数:

修改后的代码示例:

<?php 
$wp_query = new WP_Query(
  array(
    'post_type' => 'product',
    'posts_per_page' => -1,
    'tax_query' => array(
      'relation'=>'AND',
      array(
        'taxonomy'        => 'product_cat',
        'field'           => 'term_id',
        'terms'           => '5',
        'operator'        => 'IN',
      ),
      array(
        'taxonomy'        => 'pa_color',
        'field'           => 'term_id',
        'terms'           => '2',
        'operator'        => 'IN',
      ),
    ),
    'ignore_sticky_posts' => true,
    'fields' => 'ids',
  )
);

// Do something with the result of the query
$isset_products_in_category = $wp_query->post_count > 0; 

var_dump($isset_products_in_category); // will output bool(true) or bool(false).

0
投票

您的 WP_Query 代码中有两个关键问题

i) 关系放置不正确

“relation”=>“AND”必须放置在“tax_query”数组内,而不是放在顶层。

2) 参数键中的拼写错误

“ignore_stickie_posts”是一个拼写错误;它应该是“ignore_sticky_posts”。 'relation' 必须移至tax_query 下。

更正以下代码

$isset_products = new WP_Query(
array(
    'post_type'      => 'product',
    'posts_per_page' => -1,
    'ignore_sticky_posts' => true,
    'fields'         => 'ids',
    'tax_query'      => array(
        'relation' => 'AND',
        array(
            'taxonomy' => 'product_cat',
            'field'    => 'term_id',
            'terms'    => 5,
            'operator' => 'IN',
        ),
        array(
            'taxonomy' => 'pa_color',
            'field'    => 'term_id',
            'terms'    => 2,
            'operator' => 'IN',
        ),
    ),
));

然后检查该类别是否有产品或为空,如下所示

if ($isset_products->have_posts()): { echo 'somthing'; } else{ echo 'Not found'; }

别忘了

wp_reset_postdata();
© www.soinside.com 2019 - 2024. All rights reserved.