問題描述
我想列出只有使用者上傳的影像的影像。這是場景:
-
使用 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 輔助翻譯的英文資料結果。如果您對結果不滿意,可以加入我們改善翻譯效果:薇曉朵技術論壇。