【问题标题】:Wordpress claiming admin user ID as author for all postsWordpress 将管理员用户 ID 声明为所有帖子的作者
【发布时间】:2013-11-26 22:41:41
【问题描述】:

我正在使用this tutorial 为我的博客帖子创建一个前端编辑页面。我需要添加一个检查以查看当前登录的用户是否是正在编辑的帖子的作者。如果不是,那么我将用消息替换表单。

问题是由于某种原因,Wordpress 报告管理员用户 ID 是所有帖子的作者,这意味着我的逻辑被打破了(或者更确切地说,它只有在我以管理员身份登录时才有效)。真正奇怪的是,如果我通过管理仪表板编辑帖子,作者会被正确记录(即它没有被列为所有帖子的“管理员”)。

救命!

【问题讨论】:

    标签: wordpress


    【解决方案1】:

    帖子 ID 可通过教程中的 $_GET 变量获得:

    if ( $_GET['post'] == $post->ID )
    {
        $current_post = $post->ID;
    }
    

    作者 ID 也存在于 post 对象中:

    $author_id = $post->post_author;
    

    与当前用户的ID比较:

    if( get_current_user_id() == $author_id ){
        // current user is the author of the post
    } else {
        // current user is NOT the author of the post
    }
    

    【讨论】:

    • 我应该在哪里添加该逻辑?如果我将它添加到 has_posts 部分,它会为网站上的每个帖子触发,如果我以表单形式放置它,则 author_id 不会通过...?
    【解决方案2】:

    用这段代码比较当前用户和帖子作者,

    $author = $post->post_author; 
    
    global $current_user;
    
    get_currentuserinfo();
    
    if ($author == $current_user->ID){
    
    echo "You are the author of this post";
    }
    else
    {
    echo "You are not the author of this post";
    }
    

    ?>

    【讨论】:

    • 谢谢,如果 WP 的行为不那么奇怪,我相信这会起作用。因为它仍然认为所有帖子都是由 admin id 创作的……这才是真正的问题……
    • 如果您要以管理员身份进入作者创建的帖子并更新/保存,那么它将使管理员成为帖子的作者。我发现这对 wordpress 来说真的很奇怪,而且确实有点烦人......
    猜你喜欢
    • 2020-03-16
    • 1970-01-01
    • 2021-04-11
    • 1970-01-01
    • 2019-10-17
    • 1970-01-01
    • 2023-03-25
    • 2011-06-22
    • 1970-01-01
    相关资源
    最近更新 更多