0

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

1 回答 1

2

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

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

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

于 2012-09-28T06:28:33.873 回答