Cum pot ascunde imaginile din biblioteca media de la utilizatorii obișnuiți?

20 dec. 2012, 18:57:25
Vizualizări: 17.2K
Voturi: 5

Ca administrator, apreciez funcționalitățile managerului de media din WordPress 3.5.

Însă, pe un site cu mai mulți utilizatori, toți pot vedea toate imaginile din biblioteca media - indiferent dacă le-au încărcat ei sau nu. În trecut, un script în functions.php putea masca/restricționa accesul.
De exemplu:

// Ascunde tab-ul Biblioteca Media pentru fiecare agent individual
function remove_medialibrary_tab($tabs) {
    if ( !current_user_can( 'update_core' ) ) {
        unset($tabs['library']);
        return $tabs;
    }    }
add_filter('media_upload_tabs','remove_medialibrary_tab');

Acest cod nu mai funcționează, deoarece biblioteca media este acum bazată pe JavaScript.

Întrebarea: Cum pot acum ascunde sau masca imaginile din biblioteca media WordPress 3.5 de la utilizatorii care nu au încărcat acele imagini? Doresc ca utilizatorii să vadă doar propriile imagini sau doar imaginile pe care le-au încărcat pentru un anumit post/pagină.

Structura actuală este excelentă pentru un ziar care dorește să partajeze imagini între toți utilizatorii organizației - dar nu este potrivită pentru site-uri care necesită controale mai stricte cu acces multi-utilizator independent.

Nu sunt programator - sau sunt doar amator - dar cred că opțiunile ar putea include: mascarea sau eliminarea tuturor filtrelor de atașamente în meniul drop-down al noii biblioteci 3.5, lăsând doar opțiunea "încărcate pe această pagină" - sau - posibil un comutator care să permită administratorilor să activeze/dezactiveze vizibilitatea imaginilor din biblioteca media pentru utilizatorii obișnuiți.

Orice îndrumare sau direcție în această privință ar fi apreciată.

1
Comentarii

Verifică această postare, apoi acest plugin: http://wordpress.org/support/topic/restrict-editors-from-viewing-media-that-others-have-uploaded http://wordpress.org/support/view/plugin-reviews/view-own-posts-media-only Se pare că rezolvă problema în WP 3.5

User User
8 ian. 2013 04:47:04
Toate răspunsurile la întrebare 3
2
11

Pentru a permite utilizatorilor curenti să vadă doar fișierele încărcate de ei, adăugați următorul cod în acțiunile temei:

add_filter( 'posts_where', 'devplus_wpquery_where' );
function devplus_wpquery_where( $where ){
    global $current_user;

    if( is_user_logged_in() ){
         // utilizator autentificat, dar vizualizăm biblioteca?
         if( isset( $_POST['action'] ) && ( $_POST['action'] == 'query-attachments' ) ){
            // aici puteți adăuga o logică suplimentară dacă doriți
            $where .= ' AND post_author='.$current_user->data->ID;
        }
    }

    return $where;
}

Sper că acest lucru vă ajută!

5 iul. 2013 17:49:33
Comentarii

Am încercat atât de multe opțiuni pentru a funcționa în front-end și cu ACF. Aceasta este prima care funcționează pentru mine. O soluție excelentă! Mulțumesc!

Jake Jake
1 feb. 2014 03:26:46

M-am chinuit să limitez Media Uploader pentru un formular ACF în frontend pentru a afișa doar fișierele încărcate de utilizator. Nu știam despre posts_where - Se pare că funcționează perfect! Mulțumesc pentru postare.

derekshirk derekshirk
16 mar. 2016 20:01:12
1

Mulțumesc @timocouckuyt, funcționează bine, dar ai nevoie și de acest cod pentru link-ul /wp-admin/upload.php :

add_filter('pre_get_posts', 'hide_posts_media_by_other');
function hide_posts_media_by_other($query) {
global $pagenow;

if( 'upload.php' != $pagenow || !$query->is_admin ){
    return $query;
}

if( !current_user_can( 'manage_options' ) ) {
    global $user_ID;
    $query->set('author', $user_ID );
}
return $query;
}

Pentru un tutorial complet despre cum să ascunzi fișierele media și postările de la alți utilizatori, te rugăm să verifici acest tutorial: http://jeffreycarandang.com/tutorials/hide-wordpress-posts-media-uploaded-users/

Toate cele bune, phpbits

6 apr. 2014 15:14:16
Comentarii

Linkul din acest răspuns este stricat @JeffreyCarandang, ai putea să-l repari, te rog?

osxconor osxconor
12 oct. 2021 12:11:02
0

sursă referință: https://www.wpexplorer.com/disable-image-page/

Redirecționare prin funcție personalizată

<?php
// Ascunde atașamentele de la vizualizare pe frontend prin redirecționarea utilizatorilor
function hide_my_attachments_by_redirecting() {
    if ( is_attachment() ) {
        global $post;
        if ( $post && $post->post_parent ) {
            wp_redirect( esc_url( get_permalink( $post->post_parent ) ), 301 );
            exit;
        } else {
            wp_redirect( esc_url( home_url( '/' ) ), 301 );
            exit;
        }
    }
}
add_action( 'template_redirect', 'hide_my_attachments_by_redirecting' );

SAU

Redirecționare prin fișierul image.php

A doua opțiune este să dezactivezi complet paginile de atașament prin adăugarea unei redirecționări WordPress direct în partea de sus a fișierului image.php.

  1. Crează un fișier nou numit image.php în tema ta copil (este întotdeauna recomandat să lucrezi cu teme copil când modifici o temă) sau dacă dezvolți propria temă, creează un fișier image.php gol în tema ta.
  2. Introdu codul de mai jos în fișierul tău image.php.
<?php
global $post;
if ( $post && $post->post_parent ) {
    wp_redirect( esc_url( get_permalink( $post->post_parent ) ), 301 );
    exit;
} else {
    wp_redirect( esc_url( home_url( '/' ) ), 301 );
    exit;
}
1 nov. 2022 18:08:11