我为我的用户设置了一个usermeta,可以将喜欢的帖子保存到他们的个人资料中。我得到这个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) ) );
但它再次起作用,它什么都不返回。由于收藏夹列表是从用户名中提取的,用户可以更改它,我无法对列表进行硬编码。
任何人都可以帮助我吗?甚至可以使用WP_Query。不知道为什么不采取字符串或我做错了什么。我通过Wordpress文档红色,但没有找到解决方案。
提前致谢。
答案 0 :(得分:1)
数组不会作为数组存储在数据库中。他们被序列化了。从数据库中提取数组时,必须unserialize()
它。
http://php.net/manual/en/function.unserialize.php
如果你var_dump($favorites)
从数据库出来之后,你会发现它是一个奇怪的外观字符串而不是数组。 var_dump(unserialize($favorites))
会显示原始数组。