如何从Wordpress中的user_meta foreach循环中排除当前的帖子信息

时间:2012-09-27 17:40:15

标签: wordpress

我创建了一个简单的"收藏帖子"登录用户的按钮可以单击将帖子保存到"收藏夹列表中。"该按钮将当前帖子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) :

1 个答案:

答案 0 :(得分:2)

根据你的代码,似乎$ myFavesArray的第一个索引值是空的。 所以当你使用get_permalink()时,由于第一次传递空参数,它会返回当前的帖子链接。所以你需要取消设置$ myFavesArray [0]数组的第一个索引。

一个建议: 当您在用户元中保存值时,执行代码以删除数组中的空值并将唯一值存储在数组中。之后,您在检索时无需对user_meta执行任何操作。

希望这会对你有所帮助。一切顺利;)