元查询:获取多维数组中具有值的帖子

时间:2012-10-01 作者:sea_monster

我有一个自定义的帖子类型Album,它有一个名为“tracklist”的自定义字段。Tracklist是一个多维数组,包含曲目标题和曲目链接,如下所示:

$tracklist = array(
  [0] => array(
    [title] => \'Stairway to Heaven\'
    [link]  => \'stairway.mp3\'
  )
  [1] => array(
    [title] => \'Battle of Evermore\'
    [link]  => \'battle.mp3\'
  )
);
我想使用get\\u帖子查找所有歌曲《天堂的阶梯》的专辑类似这样的事情(我知道这行不通,但希望它能解释我的意图):

$albums = get_posts(array(
  \'post_type\'  => \'collection\',
  \'meta_query\' => array(
    array(
      \'key\'   => \'tracklist\',
      \'value\' => array(
        \'key\'   => \'track\'
        \'value\' => array(
          \'key\'   => \'title\',
          \'value\' => \'Starway to Heaven\'
        )
      )
    )
  )
));
使用meta\\u查询查找返回单个字符串的自定义字段非常简单,但在本例中,我正在查找埋在几个levelsdeep中的值。我该怎么做?

1 个回复
SO网友:onetrickpony

你不能,至少效率不高。您最好使用LIKE 语句,但对于“title”、“link”、“mp3”等搜索将失败:

我建议您构建自己的序列化方法。例如,将轨迹列表存储为如下字符串:

Track1 title
Track2 title
请注意新行字符(\\n). 使用它来split 当需要使用元值时,将字符串转换为数组。

然后你可以有这样的东西:

..
\'meta_query\' => array(
    array(
      \'key\'   => \'tracklist\',
      \'value\' => \'Starway to Heaven\',
      \'compare\' => \'LIKE\',
    )
  )
...
下载链接可以进入一个单独的元记录。

结束

相关推荐

Output from Meta Box Array

我已经创建了一个元框,它成功地存储了post数据,但我在输出内容并以合理的方式显示它时遇到了困难,这超出了我对PHP的有限知识。我是一个养蜂人,我想记录我的蜂箱的检查情况,所以每个蜂箱都有一个记录,其中包含一定数量的字段。因此,我想遍历所有配置单元的colony数组,即直到$hive为空,然后以每个配置单元有一行的表的形式输出数据。目前,我已经成功地手动生成了表的第一行,但不知道如何设置一个循环来完成这项工作。<?php if (have_posts() ):?>