我有一个自定义的帖子类型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中的值。我该怎么做?
SO网友:onetrickpony
你不能,至少效率不高。您最好使用LIKE
语句,但对于“title”、“link”、“mp3”等搜索将失败:
我建议您构建自己的序列化方法。例如,将轨迹列表存储为如下字符串:
Track1 title
Track2 title
请注意新行字符(
\\n
). 使用它来
split 当需要使用元值时,将字符串转换为数组。
然后你可以有这样的东西:
..
\'meta_query\' => array(
array(
\'key\' => \'tracklist\',
\'value\' => \'Starway to Heaven\',
\'compare\' => \'LIKE\',
)
)
...
下载链接可以进入一个单独的元记录。