即使ID更改也返回相同结果的查询

时间:2017-09-29 作者:lukgoh

$topics = query_posts( array( 
      \'post_type\' => \'topics\', 
      \'post_status\' => \'publish\', 
      \'posts_per_page\' => -1, 
      \'meta_query\' => array(
             \'key\' => \'forum_category\', 
             \'value\' => $forum_id, 
             \'compare\'   => \'=\' 
             ) 
      ) 
 );
您将$forum\\u id设置为什么似乎对该查询没有影响,它只是加载所有forum\\u类别输入的所有主题。。。你知道这是什么原因吗?

需要明确的是,这是一个在循环中调用的函数,因此调用该函数的位置$forum\\u id由get\\u the\\u id()设置

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

将查询更改为:

 $topics = query_posts( 
            array( 
                \'post_type\' => \'topics\',
                \'meta_query\'  => array( 
                    array( 
                        \'key\' => \'forum_category\', 
                        \'value\' => $forum_id 
                    ) 
                ) 
            ) 
        );
修复了它,我想元查询必须在双数组中?除此之外,我看不出有什么不同。。。

SO网友:FluffyKitten

You can pass your meta query into query_posts or (the preferable) WP_Query in 2 ways:

<使用数组键的数组meta_key, meta_value, meta_typemeta_comparekey, value, typecompare


1. An array using the array keys meta_key, meta_value, meta_type and meta_compare

这是您在问题中尝试的方式,但meta\\u查询应该使用以下数组键:

$args = array( 
      \'post_type\' => \'topics\', 
      \'post_status\' => \'publish\', 
      \'posts_per_page\' => -1, 
      \'meta_query\' => array(
             \'meta_key\' => \'forum_category\', 
             \'meta_value\' => $forum_id, 
             \'meta_compare\'   => \'=\' 
             ) 
      ) 
 );

2. An array of arrays using the array keys key, value, type and compare

Codex for WP_Query:

Important Note: meta\\u查询采用array 元查询参数的个数arrays (它需要一个数组)-您可以在下面的示例中看到这一点。此构造允许您使用relation 第一个(外部)数组中的参数,用于描述元查询之间的布尔关系。

$args = array( 
      \'post_type\' => \'topics\', 
      \'post_status\' => \'publish\', 
      \'posts_per_page\' => -1, 
      \'meta_query\' => array(
          array(
             \'key\' => \'forum_category\', 
             \'value\' => $forum_id, 
             \'compare\'   => \'=\' 
             ) 
          )
      ) 
 );
使用这种方式的优点是,您可以添加多个meta\\u查询来优化结果,例如,您可以获得所有帖子,其中forum\\u category=$forum\\u id,forum\\u版主=$版主\\u name

$args = array( 
      \'post_type\' => \'topics\', 
      \'post_status\' => \'publish\', 
      \'posts_per_page\' => -1, 
      \'meta_query\' => array(
          \'relation\' => \'AND\',  // this could also be "OR"
          array(
             \'key\' => \'forum_category\', 
             \'value\' => $forum_id, 
             \'compare\'   => \'=\' 
             ),
          array(
            \'key\'     => \'forum_moderator\',
            \'value\'   => $moderator_name,
            \'compare\' => \'=\'
        ),
          )
      ) 
 );

Ref: 请参见Codex for WP_Query 有关更多信息和示例。

Note: 我知道你找到了答案,但我认为附加信息和替代用法可能会有所帮助,即使对你没有帮助,也会对其他搜索类似问题的用户有所帮助

结束

相关推荐

WP_Query正在获取帖子,但_post()未呈现任何帖子

问题描述:下面的代码来自一篇特色文章。php文件。将自定义帖子类型“特色文章”的此自定义模板从我的插件复制到活动主题文件夹。模板呈现良好。甚至是显示数组中数据的查询。参见:print\\r($featured\\u articles)的结果在第二部分但“the\\u post()”不显示任何帖子。代码有什么问题?<?php $featured_articles = new WP_Query(array(\'post_type\' => \'featured-article\'