问题描述
我想列出只有用户上传的图像的图像。这是场景:
-
使用 iframe 在前端使用图像上传器。
-
我已经将
upload_files
帽添加到用户级用户,并希望他们只看到他们上传的图像。 -
我发现这个 Q Restricting users to view only media library items they have uploaded?,但接受的答案对我没有用。
// Code originally by @t31os add_action('pre_get_posts','users_own_attachments'); function users_own_attachments( $wp_query_obj ) { global $current_user, $pagenow; if( !is_a( $current_user, 'WP_User') ) return; if( 'upload.php' != $pagenow ) return; if( !current_user_can('delete_pages') ) $wp_query_obj->set('author', $current_user->id ); return; }
-
我使用图像上传器的前端页面命名为”Entry” 。
-
如果我删除这部分代码
if( 'upload.php' != $pagenow ) return;
代码工作。我想我必须改进这部分条件代码,但是无法弄清楚。条件是重要的,因为我不希望代码适用于不需要的其他页面。
所以,我需要帮助来改善条件部分,如我所说。谢谢!
最佳解决方案
这对我来说是为了列出用户在媒体库上上传的项目。
function users_my_media_only( $wp_query ) {
if ( false !== strpos( $_SERVER[ 'REQUEST_URI' ], '/wp-admin/upload.php' ) ) {
$current_user = wp_get_current_user();
$current_user = $current_user->ID;
if ( ! current_user_can( 'manage_options' ) ) {
global $current_user;
$wp_query->set( 'author', $current_user->id );
}
}
}
add_filter('parse_query', 'users_my_media_only' );
它将允许具有 manage_options
功能的所有用户 (通常为管理员) 查看所有图像,其他用户将只会看到自己的图像。请注意,可以像 $pagenow
和 current_user_can
一些改进。不是一个美丽,但它做的工作
次佳解决方案
我通过 thickbox 提取的媒体上传表单是 media-upload.php
。所以我不得不把条件改成 if( 'upload.php' != $pagenow && 'media-upload.php' != $pagenow)
。我忘了看看这个明显的地方:)
// Code originally by @t31os
add_action('pre_get_posts','users_own_attachments');
function users_own_attachments( $wp_query_obj )
{
global $current_user, $pagenow;
if( !is_a( $current_user, 'WP_User') )
return;
if( 'upload.php' != $pagenow && 'media-upload.php' != $pagenow)
return;
if( !current_user_can('delete_pages') )
$wp_query_obj->set('author', $current_user->id );
return;
}
参考文献
注:本文内容整合自 Google/Baidu/Bing 辅助翻译的英文资料结果。如果您对结果不满意,可以加入我们改善翻译效果:薇晓朵技术论坛。