0

我为我的用户设置了一个用户元,将最喜欢的帖子保存到他们的个人资料中。我得到了这个 usemeta(其中保留了帖子 ID)。一旦我得到它,我就把它放在一个一维数组中。我想显示他们最喜欢的帖子的列表。我试过这个:

$favorites //array of favorites, that has come from the databese 

$query = new WP_Query( array( 'post__in' => array( 2, 5, 12, 14, 20 ) ) );

如果我对帖子 ID 进行硬编码,它会正常工作,但由于它是一个数组,我不能只传入这样的数组,它什么也不返回。

$query = new WP_Query( array( 'post__in' => $favorites) );

它不接受它,我也尝试将数组内爆成这样的字符串:

$fav_list = implode("," , $favorites);

我明白了,这正是我需要的字符串“124,126,125,130,132,140,​​142”,不带引号。然后我会这样使用它:

$query = new WP_Query( array( 'post__in' => array($fav_list) ) );

但同样它不起作用,它什么也不返回。由于收藏夹列表是从 usermeta 中提取的,并且用户可以更改它,因此我无法对列表进行硬编码。

谁能帮我?WP_Query 是否有可能。不知道为什么它不接受字符串或我做错了什么。我浏览了 Wordpress 文档,但没有找到解决方案。

提前致谢。

4

1 回答 1

1

数组不会作为数组存储在数据库中。他们被序列化。当您从数据库中拉出数组时,您必须使用unserialize()它。

http://php.net/manual/en/function.unserialize.php

如果你var_dump($favorites)在它从数据库中出来之后,你会注意到它是一个看起来很奇怪的字符串,而不是一个数组。var_dump(unserialize($favorites))将向您展示您的原始数组。

于 2013-02-22T11:23:47.817 回答