如何在WordPress中设置权限让当前使用者的后台中只显示自己的文章和媒体库中的图片,

[复制链接]  70查看
易西 发表于 2026-5-31 20:41:33 | 显示全部楼层 |阅读模式
如何在WordPress中设置权限让当前使用者的后台中只显示自己的文章和媒体库中的图片,包括自定义类型的内容
不对管理员和网站编辑权限者设限

- b2 [  @2 `' r. q  P8 }
 楼主| 易西 发表于 2026-5-31 20:45:36 | 显示全部楼层
方法二:纯代码实现(适合有代码基础的用户)
* ?+ R% {$ f5 N4 t" L" r如果不想使用插件,可以通过以下代码组合实现完整功能:
- t* y8 j; t" C# x# s4 j0 y, P6 ?6 t% W) F. Z8 x& ~3 l
‌限制文章和自定义类型仅显示自己的内容‌/ c$ d8 P# Z2 m7 o. T1 |/ ?' [
将以下代码添加到主题的functions.php文件末尾:* B" B) i" P1 P9 [( Q/ A2 }
php9 @! [& d3 i2 w: h
// 限制非管理员、非编辑用户仅查看自己的文章和自定义类型+ A2 S) r& e6 E& h/ v2 x5 b# W
add_action('pre_get_posts', 'limit_posts_to_current_user');
2 x3 B0 C# i4 b- b4 I# z/ c7 yfunction limit_posts_to_current_user($wp_query) {
) P0 F) P6 u2 I) r* M3 V    global $current_user;  K3 d  \3 b! U& B* J: _
    get_currentuserinfo();! H5 Y+ @1 l% Q) m# x
    * [, b# [4 |& P9 a
    // 仅对非管理员、非编辑用户生效
0 r' W1 r% G: T. {' M( k6 Z6 R    if (!current_user_can('administrator') && !current_user_can('editor')) {
, ?* e8 G: `% a& R  u  n        // 限制文章列表, W( x9 [5 ], L8 B7 m  C$ O
        if (is_admin() && $wp_query->is_main_query() && $wp_query->get('post_type') == 'post') {
" f& g" O0 o0 i. g7 n/ d/ I/ d9 Y/ W            $wp_query->set('author', $current_user->ID);
0 T: _! y+ E, x) V3 {+ V0 u5 O+ b        }
$ [- t+ q1 y" M. z% f6 L8 z        // 限制自定义类型列表(替换'post_type'为你实际的自定义类型名称)7 m4 L3 R: ^2 K7 `* f. @
        if (is_admin() && $wp_query->is_main_query() && $wp_query->get('post_type') == '你的自定义类型') {
2 x! t" l( N7 Z% V! s1 h            $wp_query->set('author', $current_user->ID);" s+ v# a; b7 G! w2 M2 z% b
        }0 f/ A9 S# }" q9 A/ n+ y
    }: K; u* W* i, Q. }- f# L* S, ~- l
}
! F/ ?* P1 N) P+ {' y4 x& F' U$ T* m‌限制媒体库仅显示自己的文件‌
; D1 j4 d# j5 X& v6 w8 g& W将以下代码添加到functions.php文件末尾:( g3 L% G; `5 _% q, f) R! B
php1 a4 g2 j, \8 s* H# J- V
// 限制非管理员、非编辑用户仅查看自己的媒体文件8 K- D+ a0 i- v7 R9 Y' K  p; _. {
add_filter('posts_where', 'limit_media_to_current_user');7 Q' ?3 {  b2 T, }
function limit_media_to_current_user($where) {
# R* C+ ?7 c' Q  }& P    global $current_user;
# j9 y8 a  v5 K  E# A4 j    get_currentuserinfo();  t1 p- z# G$ i8 |- W8 l5 Z. c
    / W  ~) X/ J! g+ D9 S
    // 仅对非管理员、非编辑用户生效
. f$ {; E- D8 y1 a1 v: [; _/ t    if (!current_user_can('administrator') && !current_user_can('editor')) {" c6 Q- U. h( O; y4 L8 ?) p# v
        // 仅在媒体库页面生效. r9 n+ `, M% g% Q9 F5 B( z3 V
        if (is_admin() && isset($_GET['post_type']) && $_GET['post_type'] == 'attachment') {
- \! I: H# W4 |$ ]+ {( {6 \& {            $where .= " AND post_author = " . $current_user->ID;( n1 d  m( {7 [: i5 ]
        }
/ M8 H! u& O0 i; o: z4 P3 H" o    }
" V9 t: [" r( h4 t2 s+ ~' `( v    return $where;; h# ^( {8 k$ f9 _, I/ l* ?, Y3 P* \
}- h" }+ S( O- v
同样将代码中的你的自定义类型替换为实际的自定义类型名称。8 m+ Y. ]) [2 \6 u6 G! c  T1 C* ~5 s
" E1 Z, |) m' }% c
注意事项$ Z! l8 e( _% R5 `, C
管理员和编辑用户不受上述限制,可正常查看所有内容。/ Q* {1 Z1 t, z+ f; o* `5 X
如果使用了其他权限管理插件,可能需要调整代码逻辑,避免权限冲突。8 f4 b' o, I/ }  @  ^, q2 g
修改代码前建议备份functions.php文件,防止出现错误导致网站异常。4 r0 ~0 @, ~  q6 F# Q! p3 v
如果在操作过程中遇到问题,或者需要针对特定场景调整权限设置,可以随时告诉我你的具体需求~4 e. K1 ]& |/ d( N
2 \3 `: |5 E& u6 p2 h1 ]! {
参考
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

邮箱|首页|小黑屋|吾侪 ( 蜀ICP备2020029307号-4 )

GMT+8, 2026-8-28 15:20 , Processed in 0.052558 second(s), 22 queries .

Powered by Discuz! X3.5

Copyright © , 吾侪网

快速回复 返回顶部 返回列表