Ich versuche, Fotos vom Media Uploader aus dem wp_editor
. Das funktioniert gut, aber ich versuche nur Benutzern zu ermöglichen, Bilder anzuzeigen, für die sie der Autor sind. Hier ist der Code, den ich verwende, um dies zu tun:
//restrict authors to only being able to view media that they've uploaded function ik_eyes_only( $wp_query ) { //are we looking at the Media Library or the Posts list? if ( strpos( $_SERVER[ 'REQUEST_URI' ], '/wp-admin/upload.php' ) !== false || strpos( $_SERVER[ 'REQUEST_URI' ], '/wp-admin/edit.php' ) !== false ) { global $current_user; $wp_query->set( 'author', $current_user->id ); } } //filter media library & posts list for authors add_filter('parse_query', 'ik_eyes_only' ); add_action('pre_get_posts','ml_restrict_media_library'); function ml_restrict_media_library( $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_media_library') ) $wp_query_obj->set('author', $current_user->ID ); return; }
Das funktioniert super und die Bilder werden sowohl in der upload.php im Dashboard als auch im Frontend von einer Seite gefiltert. Wenn ich jedoch versuche, eine Datei von der Seite “upload.php” im Dashboard hochzuladen, wird die Datei erfolgreich hochgeladen. Wenn ich es vom wp_editor aus mache, bekomme ich eine Fehlermeldung, dass An error occurred in the upload. Please try again later.
An error occurred in the upload. Please try again later.
.
Warum sollte das vom Admin-Dashboard hochgeladen werden, aber nicht von meiner Frontend-Seite?
Ich musste der Rolle, die ich benutzte, eine zusätzliche Fähigkeit geben. Ich musste Zugang zu der Fähigkeit edit_others_php
und die Datei wurde erfolgreich hochgeladen.