在给客户定制主题的时候,涉及到投稿者前台投稿,媒体添加的时候,可以看见整个媒体库。为了解决这个问题,今天分享下在 WordPress 媒体库只显示用户自己上传的文件 的方法。在当前主题的 functions.php 文件添加下面的代码:
/** * WordPress 媒体库只显示用户自己上传的文件 * http://www.uctheme.com/view-user-own-media-only.html */ //在文章编辑页面的[添加媒体]只显示用户自己上传的文件 function my_upload_media( $wp_query_obj ) { global $current_user, $pagenow; if( !is_a( $current_user, 'WP_User') ) return; if( 'admin-ajax.php' != $pagenow || $_REQUEST['action'] != 'query-attachments' ) return; if( !current_user_can( 'manage_options' ) && !current_user_can('manage_media_library') ) $wp_query_obj->set('author', $current_user->ID ); return; } add_action('pre_get_posts','my_upload_media'); //在[媒体库]只显示用户上传的文件 function my_media_library( $wp_query ) { if ( strpos( $_SERVER[ 'REQUEST_URI' ], '/wp-admin/upload.php' ) !== false ) { if ( !current_user_can( 'manage_options' ) && !current_user_can( 'manage_media_library' ) ) { global $current_user; $wp_query->set( 'author', $current_user->id ); } } } add_filter('parse_query', 'my_media_library' );
最终效果:非管理员用户 在文章编辑页面的[添加媒体]窗口和 多媒体 管理界面只显示自己上传的文件.
拥有多年WordPress博客/企业建站开发经验,独树一帜的设计,提供最专业的网站设计方案;原创的主题标签语义化,增强网站优化效果。
增强用户体验、提高品牌形象给人留下深刻的印象,那就选择我们,我们的每一款主题都是独一无二的,都有自己的灵魂,每款主题都有各自的配色方案。
遵循现代网页设计的趋势,所有主题都提供完整的响应式布局,优化大桌面显示器以及对平板和智能手机的支持,从而提供一致性的用户体验。
长期及时地在线售后服务和免费升级更新,确保您的网站始终运行在最佳状态,24小时QQ在线的沟通方式免去您的后顾之忧,替您节省网站维护成本。
这个代码很牛啊 ,就是要找这样的代码!!!但是我测试了一下 管理员用没问题!但是一般的用户确实看不见别人的图片了,但是上传图片的时候会显示上传错误!请问这个怎么解决!!很好的功能呀!!!
@visvis 上传图片出错有很多种情况:
1.上传的文件夹路径没有读写权限,导致上传失败(Linux主机经常遇到)
2.一般用户有上传权限吗?
3.服务器配置问题,这个问题就要慢慢排查。
@优畅主题 谢谢耐心的解答,我发现了一个问题 ,是再后台测试发表文章能够上传图片,但是我在前台调用编辑器代码,也没用这串代码的时候上传图片的时候就发生了错误!!不知道什么原因,唉!
@visvisvis 你给阅读者角色提供上传图片权限了吗?
从你回答来看。是没有权限导致。你测试下我官网投稿页面上传图片是好的嘛?
@优畅主题 我觉得应该是 角色权限的问题 我很纳闷 ,我已经赋予了权限角色上传,但是我一个帐号是作者权限登录的 在前台登录然后发表文章就是上传不了图片,但是我用管理员的帐号在前台登录然后在发表文章的地方插入图片一切都没有问题。我回到后台用不是管理员的帐号发表文章又可以插入图片,我已经不知道该怎么样操作了!!