【问题标题】:How to exclude current post info from user_meta foreach loop in Wordpress如何从 Wordpress 中的 user_meta foreach 循环中排除当前的帖子信息
【发布时间】:2012-09-27 17:40:14
【问题描述】:

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

【问题讨论】:

    标签: wordpress


    【解决方案1】:

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

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

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

    【讨论】:

    • 感谢@techguy4web!正如您可能知道的那样,我是使用 php 和数组的新手,所以有时像这样明显的东西会从我身边溜走。干杯!
    猜你喜欢
    • 1970-01-01
    • 2017-08-25
    • 1970-01-01
    • 2016-12-20
    • 1970-01-01
    • 2014-02-18
    • 1970-01-01
    • 1970-01-01
    • 2015-06-10
    相关资源
    最近更新 更多