WP_QUERY从只在目录中的WooCommerce产品中检索帖子

时间:2017-07-26 作者:Brian Bruman

我在WooCommerce商店里有一些产品Catalog & Search 还有更多设置为Search.

我做了很多工作来确保我的目录是好的和干净的,但现在我需要对它们做一些额外的工作,并试图检索只在我的目录中的产品ID,而不仅仅是搜索。

我试过几次,但有些地方出了问题。

我错过了什么?

$params = array(
    \'posts_per_page\' => -1,
    \'post_type\' => \'product\',
    \'orderby\' => \'menu-order\',
    \'order\' => \'asc\',
    \'fields\' => \'ids\',
    \'meta_query\' =>
    array(
        array(
            \'taxonomy\' => \'product_visibility\',
            \'value\' => \'exclude-from-catalog\',
            \'compare\' => \'!=\')
        ));
$wc_query = new WP_Query($params);
$ids = $wc_query->posts;
echo \'<pre>\';
print_r($ids);
echo \'</pre>\';
通过此查询,它仍将返回所有产品ID。

我想我的meta_query 论点我要找的是product_visibility taxonomy 排除(!=) 那些有价值的exclude-from-catalog.

有人知道我的错误在哪里吗?

2 个回复
最合适的回答,由SO网友:Brian Bruman 整理而成

发布过快。不久后找到了解决方案

这项工作:

$params = array(
    \'posts_per_page\' => -1,
    \'post_type\' => \'product\',
    \'orderby\' => \'menu-order\',
    \'order\' => \'asc\',
    \'fields\' => \'ids\',
    \'tax_query\' =>
    array(
        array(
            \'taxonomy\' => \'product_visibility\',
            \'field\' => \'term_id\',
            \'terms\' => 7,
            \'operator\' => \'NOT IN\')
        ));
$wc_query = new WP_Query($params);
$ids = $wc_query->posts;
echo \'<pre>\';
print_r($ids);
echo \'</pre>\';
请注意term 身份证件7exclude-from-catalog

SO网友:Cesar Henrique Damascena

所以你的问题是meta_query 并传递tax_query. 如果要搜索meta value:

$params = array(
    \'posts_per_page\' => -1,
    \'post_type\' => \'product\',
    \'orderby\' => \'menu-order\',
    \'order\' => \'asc\',
    \'fields\' => \'ids\',
    \'meta_query\' =>
    array(
        array(
            \'key\' => \'product_visibility\',
            \'value\' => \'exclude-from-catalog\',
            \'compare\' => \'!=\')
        ));
$wc_query = new WP_Query($params);
$ids = $wc_query->posts;
echo \'<pre>\';
print_r($ids);
echo \'</pre>\';
或者这个,如果是term

   $params = array(
        \'posts_per_page\' => -1,
        \'post_type\' => \'product\',
        \'orderby\' => \'menu-order\',
        \'order\' => \'asc\',
        \'fields\' => \'ids\',
        \'tax_query\' =>
        array(
            array(
                \'taxonomy\' => \'product_visibility\',
                \'field\' => \'slug\'
                \'terms\' => \'exclude-from-catalog\',
                \'compare\' => \'NOT IN\')
            ));
    $wc_query = new WP_Query($params);
    $ids = $wc_query->posts;
    echo \'<pre>\';
    print_r($ids);
    echo \'</pre>\';
查看更多关于tax_querymeta_query.

结束

相关推荐

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

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