我创建了一个简单的"收藏帖子"登录用户的按钮可以单击将帖子保存到"收藏夹列表中。"该按钮将当前帖子ID附加到user_meta字段。
我在"我的收藏夹"上显示信息时有点卡住了?但是,页面。
我可以毫无问题地显示收藏的帖子ID列表,但是当我尝试添加帖子标题和永久链接等信息时,Wordpress会传递"我的收藏夹"页面信息到数组中。在"收藏夹列表上方,"用户还会看到一个超链接"我的收藏夹"。
有关如何防止这种情况发生的任何想法。这是代码......
<?php //start favorites list
// Get user info.
global $current_user, $wp_roles;
get_currentuserinfo();
$myFaves = get_user_meta($current_user->id, 'faveposts', true);
$myFavesArray = explode(',',$myFaves);
sort($myFavesArray);
foreach ($myFavesArray as $myFave) :
?>
<a href="<?php echo get_permalink( $myFave ); ?>">
<?php echo get_the_title($myFave); ?>
</a>
<?php endforeach; //end favorites list ?>
这是输出......
<a href="http://sample-url.com/favorites/">
Your Favorites
</a>
<a href="http://sample-url.com/post-1/">
Post Title 1
</a>
<a href="http://sample-url.com/post-2/">
Post Title 2
</a>
帖子标题1和2是实际收藏帖子的示例。您的收藏夹是显示收藏夹的页面(不应该显示)。
思想?
修改
找到了修复方法。添加这段代码会从数组中删除当前帖子......
unset($myFavesArray[0]);
所以最终的代码是......
$myFaves = get_user_meta($current_user->id, 'faveposts', true);
$myFavesArray = explode(',',$myFaves);
unset($myFavesArray[0]);
sort($myFavesArray);
foreach ($myFavesArray as $myFave) :
答案 0 :(得分:2)
根据你的代码,似乎$ myFavesArray的第一个索引值是空的。 所以当你使用get_permalink()时,由于第一次传递空参数,它会返回当前的帖子链接。所以你需要取消设置$ myFavesArray [0]数组的第一个索引。
一个建议: 当您在用户元中保存值时,执行代码以删除数组中的空值并将唯一值存储在数组中。之后,您在检索时无需对user_meta执行任何操作。
希望这会对你有所帮助。一切顺利;)