WP_QUERY选项树中的元数据发布

时间:2015-07-09 作者:lawdawg

我正在做一个WP_Query 正在尝试按元数据筛选帖子。

    $args = array(
      \'ignore_sticky_posts\'=> 1,
      \'post_type\' => \'post_projects\',
      \'post_status\' => \'publish\',
      \'posts_per_page\' => $nr_posts,
      \'meta_query\' => array(
        \'relation\' => \'OR\',
        array(
          \'key\' => \'wpl_goal_amount\',
          \'value\' => 100,
          \'compare\' => \'!=\',
        ),
        array(
          \'key\' => \'wpl_location\',
          \'value\' => \'Europe\',
          \'compare\' => \'=\',
        ),
      ),
    );
我正在用两篇帖子来测试这一点。其中一个在它的一系列位置中有“欧洲”,但每当我运行它时,它都不会想出任何东西。

问题更新:

我使用选项树来保存元数据,如前一个答案所述,它存储序列化后的元数据(Wordpress的默认设置),结合这一点和另一篇文章,我发现有两种方法可以查询序列化后的数据。第一种更方便,但更像是偷工减料,第二种更合适,但更困难:

越简单:

    array(
      \'key\' => \'wpl_location\',
      \'value\' => \'"\' . $my_value . \'"\',
      \'compare\' => \'LIKE\'
    ),
与更好但更难的方法相比:

   array(
      \'key\' => \'wpl_location\',
      \'value\' => serialize(array(3 => \'Europe\')),
      \'compare\' => \'LIKE\'
    ),
我相信第二种方法将要求我拥有一个(接近)与数据库相同的序列化数组,这对于我创建的系统来说是无法长期工作的,因为它需要匹配数组中多个项目中的一个。

我的最新问题:

我应该继续沿着这条路走下去并使用第一种方法,还是需要转储选项树并找出一种方法将元数据以未序列化的形式添加到帖子中,以便可以查询它?

2 个回复
SO网友:Ray Flores

此处可能缺少“meta\\u key”参数:

$args = array(
      \'ignore_sticky_posts\'=> 1,
      \'meta_key\'   => \'wpl_location\', // here
      \'post_type\' => \'post_projects\',
      \'meta_query\' => array(
        array(
          \'key\' => \'wpl_location\',
          \'value\' => \'Europe\',
          \'compare\' => \'IN\',
        ),
      ),
    );
资料来源:https://codex.wordpress.org/Class_Reference/WP_Query (页面下方大约四分之三)。

SO网友:Howdy_McGee

如果要将数组保存到元数据中,它将变为Serialized. 这使得查询非常困难,可以尝试使用通配符:

$args = array(
    \'ignore_sticky_posts\'=> 1,
    \'post_type\'  => \'post_projects\',
    \'meta_query\' => array(
        array(
            \'key\'     => \'wpl_location\',
            \'value\'   => \'%Europe%\',
            \'compare\' => \'LIKE\',
        ),
    ),
);
这将在序列化数据中搜索任何看起来像“欧洲”的内容。

结束

相关推荐

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

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