博客 / WordPress/ WordPress后台只显示当前用户的文章和媒体文件

WordPress后台只显示当前用户的文章和媒体文件

WordPress后台只显示当前用户的文章和媒体文件

在使用WordPress多用户主题时,后台默认会显示所有用户的文章和媒体文件。这会导致用户能看到其他人的内容,不利于管理。

本文将介绍如何让WordPress后台只显示当前登录用户的文章和媒体文件,希望能为大家提供帮助。

实现方法

将以下代码添加到当前主题的 functions.php 文件中即可。

// 仅显示当前用户的文章和媒体文件(管理员除外)
add_action('init', 'check_user_role');
function check_user_role() {
    global $current_user;
    // 如果当前用户不是管理员,则应用限制
    if ($current_user->roles[0] != 'administrator') {
        // 在媒体库只显示用户自己上传的文件
        add_action('pre_get_posts', 'MBT_restrict_media_library');
        function MBT_restrict_media_library($wp_query_obj) {
            global $current_user, $pagenow;
            if (!is_a($current_user, 'WP_User')) {
                return;
            }
            // 仅对媒体库Ajax查询生效
            if ('admin-ajax.php' != $pagenow || $_REQUEST['action'] != 'query-attachments') {
                return;
            }
            // 如果用户没有管理媒体库的权限,则只显示其上传的文件
            if (!current_user_can('manage_media_library')) {
                $wp_query_obj->set('author', $current_user->ID);
            }
        }
        // 在文章列表只显示用户自己的文章
        add_action('pre_get_posts', 'MBT_restrict_posts');
        function MBT_restrict_posts($query) {
            global $current_user;
            if (is_admin() && !current_user_can('administrator')) {
                $query->set('author', $current_user->ID);
            }
        }
    }
}

代码说明与注意事项

  • 此代码的核心逻辑是:非管理员用户在后台只能看到自己创建的文章和上传的媒体文件。
  • 代码包含两个主要函数:MBT_restrict_media_library 用于限制媒体库显示,MBT_restrict_posts 用于限制文章列表显示。
  • 原示例代码仅处理了媒体库,上述增强版已补充对文章列表的限制,功能更完整。
  • 请确保代码正确添加到主题的 functions.php 文件末尾,或通过子主题/代码片段插件添加。
  • 添加代码后,建议清空站点缓存(如果使用了缓存插件)并刷新后台页面以查看效果。

重要提示:本文提供的代码为标准实现,原文中提到的“修改数据库前缀”与本功能无关,请忽略。本功能不涉及直接操作数据库表。

发表评论

您的邮箱不会公开。必填项已用 * 标注。