Jak ukryć wpisy i pliki przed innymi autorami w WordPressie ?

[ 1 grudnia 2018 ]

Prowadząc bloga w oparciu o WordPress po pewnym czasie może pojawić się potrzeba załączenia innych użytkowników do przygotowania artykułów. Dobrą praktyką w tym zakresie jest nadawanie im uprawnień na podstawie wyznaczania odpowiednich ról. To pozwoli ograniczyć dostęp autorów tylko do tych opcji, które są niezbędne, by stworzyć wpis. Do dyspozycji masz takie role, które możesz przypisać.  Znajdziesz je  w sekcji „Użytkownicy” panelu administracyjnym.

 

 

 

Role użytkowników w WordPressie:

 

  • Subskrybent ta rolę otrzymują zazwyczaj goście, którzy utworzyli konto lub klienci którzy zakupili coś w sklepie Woocommerce. Ich przywilej ogranicza się jedynie do możliwości komentowania i edytowania profilu.
  • Współpracownik to bardzo bezpieczne opcja jeśli chcesz mieć autora ale chcesz przed publikacją zweryfikować to co napisał. Ta rola może dodawać samodzielnie wpisy ale nie może ich publikować. Jego wpisy zapisywane są jako szkice.
  • Autor rola, która może już o wiele więcej. Zazwyczaj dostają ją osoby, które będą dla Ciebie pisać ale są w miarę zaufane. Autor może dodawać i publikować  własne wpisy oraz edytować  i je usuwać. Może wgrywać pliki do biblioteki multimediów.
  • Redaktor tą role przypiszesz osobie, do której masz mega zaufanie. Musisz uważać bowiem redaktor otrzymuje możliwość publikacji, edycji, usuwania własnych wpisów ale co ważne również wpisów od innych użytkowników. Może zarządzać kategoriami, tagami oraz biblioteka multimediów. Dodatkowo może usuwać komentarze, zatwierdzać je, publikować i usuwać strony statyczne. Tak więc ta osoba może już trochę namieszać w Twoim WordPressie.
  • Administrator może wszystko – posiada wszystkie przywileje powyższych ról plus otrzymuje możliwość konfiguracji wszystkich ustawień. Tą rolę powinieneś posiadać tylko Ty lub naprawdę zaufany pracownik.

 

Jak widać, WordPress pozwala Państwo dodać różne typy użytkowników w zależności od potrzeb projektu. Rekomendujemy jednak przepisywać ról redaktora osobom, które są zaufane. Dla wszystkich pozostałych użytkowników wybierajcie rolę autorów oraz współpracowników. Zazwyczaj na początek współpracy dobrze jest dać role współpracownika, by w razie słabego wpisu móc go samemu poprawić i zatwierdzić. Jeśli macie już osobę, która dobrze pisze i wiecie, że jej teksty są w porządku to jak najbardziej może otrzymać ona role  autora.

Uprawnienia poszczególnych ról użytkowników w WordPress mają jednak swoje słabe strony. Jedna z nich jest dostęp autorów do wpisów oraz plików multimedialnych, które dodawane są przez nas oraz przez innych autorów. Na pierwszy rzut oka nie stanowi to  żadnego problemu ponieważ autor nie może wnosić żadnych zmian do elementów graficznych oraz nie ma możliwości ich usunięcia (rys. 2).

 

Rysunek 2. Brak możliwości edytowania cudzego obrazku w bibliotece mediów

Rysunek 2. Brak możliwości edytowania cudzego obrazku w bibliotece mediów

 

Jednak co w przypadku gdy prowadzisz duży blog, gdzie pracuje jednocześnie kilkunastu autorów ? Albo jeśli pracujecie nad wpisem i nie chcecie, aby żaden z autorów nie dowiedział się o jego zawartości przed publikacją ? W tym przypadku wspólny dostęp do tytułu i  szkicu artykułu oraz plików medialnych pozwala otrzymać dostęp do informacji. Pokażę Wam teraz sposób jak ukryć pliki oraz wpisy przed innymi autorami.

 

Jak ukryć własne artykuły przed innymi autorami ?

Standardowe uprawienia dla roli „Autor” pozwala użytkownikom zobaczyć listę wszystkich szkiców oraz tytuły opublikowanych artykułów. Nie mogą jednak przeglądać zawartość tych artykułów.

 

Rysunek 3. Przegląd wpisów przez autorów w standardowych uprawieniach

Rysunek 3. Przegląd wpisów przez autorów w standardowych uprawieniach

 

Dlatego aby ukryć własne wpisy przed innymi autorami należy zmodyfikować plik functions.php motywu, który używacie.  Otworzycie go za pomocą Edytora, który jest wbudowany w WordPressie lub pobierając z FTP. Przejdziemy do sekcji Wygląd – Edytor i wybierzemy plik funkcje motywu (rys. 4).

 

Rysunek 4. Edytowanie pliku functions.php

Rysunek 4. Edytowanie pliku functions.php

 

 

Na końcu tego pliku wstawimy poniższy kod:

 

function posts_for_current_author($query) {

                global $pagenow;

                if( ‘edit.php’ != $pagenow || !$query->is_admin )

                    return $query;

                if( !current_user_can( ‘edit_others_posts’ ) ) {

                               global $user_ID;

                               $query->set(‘author’, $user_ID );

                }

                return $query;

}

add_filter(‘pre_get_posts’, ‘posts_for_current_author’);

 

Po zapisywaniu zmian możemy wejść na stronę jako autor i zobaczyć, że dostęp jest otwarty tylko do własnych wpisów (rys. 5):

 

Rysunek 5. Przegląd wpisów przez autorów po modyfikacji pliku functions.php

Rysunek 5. Przegląd wpisów przez autorów po modyfikacji pliku functions.php

 

Jak widać z rysunku, wszystko działa poprawnie. Należy jednak dodać, że ograniczenie w użytym kodzie nie dotyczy redaktorów. Oni mogą dalej zarządzać wpisami i akceptować te artykuły, które czekają na publikację.

 

 

Jak ukryć pliki multimedialne przed innymi autorami ?

Ten problem rozwiążemy  za pomocą instalacji wtyczki lub jak wolicie z pomocą edytowania pliku function motywu. Możecie wybrać dowolny z tych wariantów.

 

Użycie wtyczki Restrict Media Library Access

Rozwiązać powyższy problem można za pomocą wtyczki Restrict Media Library Access, która znajduje się na repozytorium WordPress. Przejdź do sekcji Wtyczki – Dodaj nową i w pole wyszukiwarki wpiszemy Restrict Media Library Access.  Wtyczka nie zawiera dodatkowych opcji i nie potrzebuje źadnej konfiguracji. Po jej włączaniu pliki do razu zostaną ukryte.

 

Rysunek 6. Biblioteka mediów w autora, który dodał obrazek

Rysunek 6. Biblioteka mediów w autora, który dodał obrazek

 

 

Rysunek 7. Biblioteka mediów dla innych autorów

Rysunek 7. Biblioteka mediów dla innych autorów

 

 

Edytowanie pliku functions.php

Jeśli nie chcecie kolejnej wtyczki w Waszym WordPressie przygotowaliśmy alternatywne rozwiązanie. Możecie po prostu jak poprzednio dodać odpowiedni kod do pliku function.php domyślnego motywu.

 

Uwaga! Przed wprowadzeniem zmian do plików motywu rekomendujemy zrobić kopie zapasową szablonu. Oprócz tego możecie robić testy na darmowych motywach dostępnych również na repozytorium WordPress jak i na stronie TemplateMonster.

 

Przejdziemy do pliku functions.php motywu. Na końcu wstawimy poniższy kod:

 

// Limit media library access

  add_filter( ‘ajax_query_attachments_args’, ‘wpb_show_current_user_attachments’ );

  function wpb_show_current_user_attachments( $query ) {

    $user_id = get_current_user_id();

    if ( $user_id && !current_user_can(‘activate_plugins’) && !current_user_can(‘edit_others_posts

‘) ) {

        $query[‘author’] = $user_id;

    }

    return $query;

}

 

Po zapisywaniu zmian otrzymamy ten sam rezultat. Autorzy będą widzieć tylko własne media, które dodali do biblioteki mediów. Cudze obrazki będą niedostępne.

 

 

Podsumowanie

W dzisiejszym artykułu pokazaliśmy dwa proste sposoby, które pomogą ograniczyć dostęp autorów do cudzych wpisów i plików multimedialnych. Dzięki temu możecie być pewni, że przed publikacją inni użytkownicy nie będą wiedzieli o Waszych artykułach i nie zgarną Wam gorącego tematu np. gdy piszecie dla jakiejś gazety. Z drugiej strony takie rozwiązanie upraszcza autorom korzystanie z biblioteki mediów ponieważ będą widzieć tylko te obrazki, które dotyczą ich wpisów.

P.S. Jeśli macie pytania lub uwagi, proszę zostawić komentarz poniżej.

Dodaj komentarz

Twój adres email nie zostanie opublikowany. Pola, których wypełnienie jest wymagane, są oznaczone symbolem *