X

Restricționarea utilizatorilor să vadă doar elementele din biblioteca media pe care le-au încărcat

Fragmente de IsItWP

Căutați o modalitate de a restricționa utilizatorii să vadă doar elementele din biblioteca media pe care le încarcă? Deși probabil există un plugin pentru asta, am creat o scurtă secvență de cod pe care o puteți folosi pentru a restricționa utilizatorii să vadă doar elementele din biblioteca media pe care le încarcă în WordPress.

Instrucțiuni:

Tot ce trebuie să faceți este să adăugați acest cod în fișierul functions.php al temei dvs. sau într-un plugin specific site-ului:

function my_files_only( $wp_query ) {
    if ( strpos( $_SERVER[ 'REQUEST_URI' ], '/wp-admin/upload.php' ) !== false ) {
        if ( !current_user_can( 'level_5' ) ) {
            global $current_user;
            $wp_query->set( 'author', $current_user->id );
        }
    }
}

add_filter('parse_query', 'my_files_only' );

Notă: Dacă aceasta este prima dată când adăugați fragmente de cod în WordPress, consultați ghidul nostru despre cum să adăugați corect fragmente de cod în WordPress, pentru a nu vă defecta accidental site-ul.

Dacă v-a plăcut această secvență de cod, vă rugăm să luați în considerare vizitarea altor articole de pe site, cum ar fi: Cele mai bune 7 servicii VPN pentru utilizatorii WordPress și Cum să creați un formular de donații WordPress.

Comentarii   Lasă un răspuns

  1. am realizat abia acum că, deși acest script funcționează în WordPress web, versiunea Android/mobilă a bibliotecii media este încă vizibilă pentru toată lumea

  2. o mică modificare pe care am făcut-o în cod pentru a funcționa pe partea frontală, pe pagina mea de profil

    //if ( false !== strpos( $_SERVER[ ‘REQUEST_URI’ ], ‘/wp-admin/upload.php’ ) ) {
    if ($wp_query->query_vars[‘post_type’]==”attachment”){

    în acest fel funcționează corect.

    1. Mulțumesc Prasanna, mi-am înregistrat un cont Disqus doar pentru a-ți mulțumi.

      1. Și eu

  3. My new best friend: ajax_query_attachments_args | Alicia Ramirez March 3, 2014 at 6:17 pm

    [...] după niște căutări pe Google am găsit multe referințe (aici și aici, de exemplu ) la acest [...]

  4. A funcționat! (WP 3.8.1) Mulțumesc!

  5. salut, mulțumesc pentru cod. foarte util!

    cu toate acestea, alți utilizatori încă pot vedea atașamentele dacă au un link direct. există o modalitate de a preveni acest lucru? adică doar proprietarul media (și administratorul) pot vedea atașamentele. alți utilizatori sau publicul nu le pot vedea.

    Mulțumesc.

  6. am pus acel cod... dar am un contor greșit pentru postările media...

    Utilizatorul curent nu are postări media... în timp ce eu am Toate (15) | Imagini (15) | Neatașate (2)

    vreau să arate numărul pentru utilizatorul curent.. nu pentru toți….

    1. Am ascuns doar toate numerele de numărare prin CSS: subsubsub .count {display: none; }

  7. ?afak SARAÇO?LU May 6, 2013 at 12:00 pm

    Çok teşekkür ederim – Mulțumesc

  8. Christopher Grasso April 2, 2013 at 6:35 pm

    Mulțumesc enorm pentru asta... Role Scoper se încurca cu un alt plugin și asta era singura funcționalitate pe care mi-o doream, ca imaginile să fie limitate... Mulțumesc pentru actualizarea pentru a funcționa cu noua bibliotecă media, funcționează impecabil.

  9. Știe cineva cum să restricționeze utilizatorul și atunci când încarcă fișiere din inserarea sau editarea postării? De fapt, când apăs butonul Adaugă media, fereastra pop-up îmi arată fila Biblioteca media, cu toate mediile încărcate de toți utilizatorii. Folosesc WP 3.5.1.
    Mulțumesc!

    1. Uitați-vă la răspunsul meu către designlabCPH mai sus. Introduceți această funcție în fișierul dvs. functions, iar biblioteca media va fi restricționată doar la fișierele proprii ale utilizatorilor.

      1. Nu funcționează pentru mine 🙁 Vreau ca utilizatorii care nu sunt administratori să poată vedea doar propriile fișiere, chiar și atunci când creează postări, să vadă doar propriile imagini atunci când adaugă imagini de prezentare, etc.

      2. Nu funcționează pentru mine 🙁 Vreau ca utilizatorii care nu sunt administratori să poată vedea doar propriile fișiere, chiar și atunci când creează postări, să vadă doar propriile imagini atunci când adaugă imagini de prezentare, etc.

      3. Nu funcționează pentru mine 🙁 Vreau ca utilizatorii care nu sunt administratori să poată vedea doar propriile fișiere, chiar și atunci când creează postări, să vadă doar propriile imagini atunci când adaugă imagini de prezentare, etc.

      4. Nu funcționează pentru mine 🙁 Vreau ca utilizatorii care nu sunt administratori să poată vedea doar propriile fișiere, chiar și atunci când creează postări, să vadă doar propriile imagini atunci când adaugă imagini de prezentare, etc.

      5. Funcționează acum! Mulțumesc mult!

  10. Am folosit pluginul Role Scoper. Am încercat să aflu asta toată ziua. Role Scoper va permite doar utilizatorului conectat să vadă propriul conținut și propriile postări în mod implicit. Puteți schimba acest lucru dacă doriți. Bibliotecă media privată pentru autori 😉

  11. Jashua Peter Grafstein October 9, 2012 at 5:17 pm

    există o modalitate de a configura această linie de cod pentru a restricționa biblioteca media doar pentru colaboratori. Astfel, colaboratorii pot vedea doar mediile pe care le încarcă, iar administratorii pot vedea totul.

  12. există o modalitate de a programa această linie de cod pentru a se aplica doar anumitivelor niveluri de membru? (adică, contributorii pot vedea doar propriile încărcări media, dar administratorii pot vedea totul)

  13.  Folosesc WP 3.3.1 și acest lucru nu funcționează. Există o actualizare a codului? Mulțumesc.

    1. Uită-te la răspunsul meu de mai sus. Am postat o funcție care va funcționa cu noul manager media (WP 3.5+)

  14. Am o întrebare Kevin, cum restricționez un contributor să nu încarce media?

    1. Salut Rian,
      Pe linia 3 vei vedea „level_5” pe această pagină WordPress sunt detalii despre ce sunt nivelurile utilizatorilor, poți schimba doar acel nivel. http://codex.wordpress.org/User_Levels#User_Level_5_2

      1. nu am observat că rolul implicit pentru contributor nu poate încărca nicio media. tocmai am încercat aseară.. haha.

        Îți mulțumesc foarte mult Kevin! 🙂

        1. Cu plăcere, oricând,

  15. Mulțumesc Kevin,  este foarte util, dar cum reparăm   ‘numărul total de fișiere’?

    1. Mă bucur să aud că îți place fragmentul de cod! Ei bine, totalul este încă corect, deoarece fișierele există, deși înțeleg punctul tău de vedere. Voi analiza acest lucru în viitorul apropiat să văd dacă pot posta un fragment de cod.

  16. mulțumesc pentru postare. exact ce căutam. 
    Am făcut o mică modificare >> adaugă și fișierul media-upload.php la această linie de cod. aceasta va filtra, de asemenea, imaginile / fișierele media deasupra editorului wysiwyg.
    presta

    1. Salut Sheila,

      Unde/Ce ai postat ca și cod în fișierul media-upload.php? Primesc o eroare când copiez codul. Mulțumesc anticipat!

  17. Am găsit o problemă, biblioteca media încă afișează conținut complet în fereastra pop-up de inserare media la postare. (la fel și pentru alte șabloane de pagină)

    totuși, am adăugat get global $post, și am adăugat o altă condiție pentru postări.

    ‘/wp-admin/media-upload.php?post_id=’.$post->ID.’&type=image&tab=library’

    dar nu a funcționat..

    1. Am rezolvat acest lucru adăugând o a doua clauză
      „|| strpos( $_SERVER[ ‘REQUEST_URI’ ], ‘/wp-admin/media-upload.php’ ) !== false”

      1. Cum naiba reușești să faci asta să funcționeze în WP 3.5?

        Am încercat totul (cred, deși nu sunt un programator PHP), inclusiv adăugarea soluției tale de mai sus – și pur și simplu nu pot să o fac să funcționeze.

        Am nevoie ca doar Administratorii să poată vedea toate mediile din fereastra pop-up a bibliotecii, iar toți ceilalți (inclusiv editorii) să poată vedea doar imaginile lor respective…. Ai putea să-mi explici pas cu pas? 🙂

        1. Folosește Role Scoper dacă nu ai rezolvat încă problema, omule. Realizează exact această problemă. Este implicită atunci când instalezi pluginul. Atât Biblioteca Media, cât și postările. FYI

          1. Am petrecut ore întregi astăzi doar pentru a rezolva problema încărcării utilizatorilor și am descoperit că acesta este singurul cod care funcționează. Mulțumesc!

        2. Trebuie să schimbi câțiva parametri pentru ca acest lucru să funcționeze cu noul manager media.

          Poți folosi această funcție (observă că am creat o capacitate „manage_media_library”. Doar dacă utilizatorul o are, va vedea fișiere diferite de ale sale):

          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;

          }

          1. Căutam exact asta: ‘admin-ajax.php’ != $pagenow || $_REQUEST[‘action’] != ‘query-attachments’
            mulțumesc mult!

          2. Unde ai pus asta?

          3. ca un plugin nou! bun, asta funcționează pentru mine!

          4. soluție de cod grozavă Patrick – mi-a rezolvat problema imediat – Mi-aș dori să fi găsit asta în decembrie. : ) mulțumesc!

          5. Încerc codul tău în plugin, direct în function.php, dar nu funcționează. Am Wordpress 3.5.1 și vreau să-l folosesc pe front-end cu butonul add media al funcției wp_editor.
            Am încercat în wp-admin, dar nici acolo nu funcționează.

            Ai vreo idee de ce nu funcționează???

          6. Am folosit asta, multe aprecieri pentru tine!

  18. Aceste fragmente sunt atât de utile pentru site-ul meu cu mai mulți bloggeri. Ar trebui să le faci plugin-uri WP! mulțumesc =)

    1. Super, mă bucur că îți place fragmentul, nu sunt sigur că merită adăugat ca plugin, deși ar putea fi configurat ca unul.

      1. Ar trebui, am dificultăți în grupul de plugin-uri să găsesc asta și am renunțat și am căutat resurse externe, ceea ce m-a adus aici. Îmi place blogul tău, fragment de cod direct la obiect. Învăț mult de aici!
        Mi-ai luminat ziua, Mulțumesc Chard! =)

        1. Nicio problemă, mă bucur că îți place site-ul – vizitează-l regulat, postăm zilnic!

Adaugă un comentariu

Suntem bucuroși că ați ales să lăsați un comentariu. Vă rugăm să rețineți că toate comentariile sunt moderate conform politicii noastre de confidențialitate, iar toate linkurile sunt nofollow. NU folosiți cuvinte cheie în câmpul nume. Să avem o conversație personală și semnificativă.

Lista de verificare pentru lansarea WordPress

Lista de verificare finală pentru lansarea WordPress

Am compilat toate elementele esențiale de verificare pentru lansarea următorului dvs. site WordPress într-o singură carte electronică la îndemână.
Da, trimite-mi eBook-ul gratuit!