Envato Elements - pobieraj co chcesz, ile chcesz

W przypadku większości stron opartych m.in. o system WordPress którymi zarządzam „zwykli użytkownicy” mają zazwyczaj uprawnienia ograniczone do niezbędnego minimum, tak, by przypadkowymi działaniami nie spowodować „jakiejś usterki” na stronie.

Są jednak sytuacje, gdy właściciel bądź oddelegowany użytkownik chce/potrzebuje mieć większe uprawnienia – w tym czasem nawet zarządzanie wtyczkami i motywami, oczywiście po odpowiednim przeszkoleniu i ustaleniu ograniczenie odpowiedzialności po mojej stronie. Ale nawet w takiej sytuacji jest jeszcze jedna linia obrony, dzięki czemu przynajmniej część ustawień/modyfikacji możemy zablokować przed przypadkową zmianą…

WordPress Must-use Plugins

Do podjęcia tego tematu skłonił mnie przypadek jednego z moich (już byłych) klientów, który z powodu zatrudnienia w swojej firmie informatyka na etat – choćby ze względu na dzielącą nas odległość nie mogłem w tym przypadku zapewnić tego typu wsparcia – postanowił przekazać mu również bieżącą obsługę strony (no cóż, czasem liczy się każda złotówka).

I o ile na razie sama strona działa (minęło dopiero kilka dni ;-)), to ów informatyk skontaktował się w tym tygodniu ze mną, bo nie mógł znaleźć miejsca, w którym jest skonfigurowany widget, który wyświetla się na głównej stronie panelu zarządzania, a w którym znajdują się podstawowe informacje dotyczące obsługi strony, oraz dane kontaktowe… oczywiście do mnie.

WordPress nie jest mu chyba taki zupełnie obcy, bo jak napisał – sprawdził wszystkie wtyczki (zapewne po nazwie, i ew. tymczasowym wyłączeniu – raczej nie weryfikował kodu każdej z nich ;-)), wszystkie pliki szablonu potomnego (tu akurat poza CSSem zaledwie kilkanaście linijek w functions.php, więc kodu nie było dużo), a nawet na chwilę zmienił szablon/motyw – i nic, jak widget się wyświetlał, tak się wyświetla…

Wtyczka permanentna

Taki widget instaluje na każdej stronie która zarządzam (jako wtyczka do WordPressa), tak by w razie problemów użytkownik mógł znaleźć tam najważniejsze informacje (co i jak), oraz niezbędne dane kontaktowe (w tym link do systemu pomocy).

Aby mieć pewność, że nawet w przypadku standardowej zabawy wtyczkami czy motywami (oczywiście tylko tam, gdzie dany użytkownik ma takie uprawnienia) nikt nie usunie „przez przypadek” m.in. wtyczki odpowiadającej za ten widegt – korzystam tutaj z pewnej sztuczki, która dostępna jest w WordPressie chyba od jakiś siedmiu lat.

A szybka ankieta wśród znajomych tylko mnie utwierdziła, że warto o tym napisać, bo nawet wśród znajomych, których uważam za lepszych speców od WordPressa niż ja (przynajmniej w niektórych aspektach) wiedza na ten temat nie była zbyt powszechna.

Z Multi-User do Must Use

Wszystko zaczęło się chyba gdzieś w czasach gdy powstawał WordPress Multi-User, który już od jakiegoś czasu – jako WordPress Multisite – jest częścią głównej gałęzi WordPressa, a więc każdą stronę na WordPressie można w prosty sposób przekształcić w sieć stron (i odwrotnie).

Wtedy też powstał katalog „mu-plugins”:

wp-content/mu-plugins

W prawdzie standardowo takiego katalogu nie ma, ale wystarczy go utworzyć, i każda wtyczka do niego wrzucona zostanie automatycznie aktywowana, i nie będzie można jej usunąć bezpośrednio z WordPressa (chyba, że korzystając z pewnej sztuczki która niedawno opisałem), a nawet nie będzie widoczna na liście zainstalowanych wtyczek.

Alternatywny katalog

Oczywiście jak to w WordPressie często bywa, tak i ten katalog można zmienić, za pomocą odpowiedniej opcji/zmiennej w pliku „wp-config.php”:

define( 'WPMU_PLUGIN_DIR', WP_CONTENT_DIR . '/dodatkowe-wtyczki' );

Proxy PHP loader

Kolejnym problemem może być to, że domyślnie WordPress wczytuje tylko pliki wtyczek umieszczone bezpośrednio w tym katalogu (a nie podkatalogu, jak ma to miejsce w przypadku standardowego katalogu dla wtyczek), stąd  – zgodnie z informacjami na stronie WordPress.org – w przypadku, gdy podkatalog dla wtyczki jest faktycznie wymagany, musimy przygotować plik ładujący właściwy plik wtyczki:

<?php // mu-plugins/load.php
require WPMU_PLUGIN_DIR.'/my-plugin/my-plugin.php';

Nie ma dymu bez ognia

Niestety wiążą się z tym też i ograniczenia – skoro takiej wtyczki nie widać na liście wtyczek, to nie ma też możliwości jej zaktualizować z samego WordPressa, trzeba to robić ręcznie, przez FTP/SCP, co w przypadku bardziej rozbudowanych wtyczek z repozytorium WordPress.org może być problemem (nie licząc tego, że nie każda wtyczka będzie prawidłowo działać z tego katalogu, przynajmniej bez pewnych modyfikacji, czy „loadera”).

Dlatego w ten sposób – poprzez katalog „mu-plugins” – instaluje głównie prostsze wtyczki, przygotowane specjalnie na potrzeby danej strony, zwłaszcza, kiedy wiem, że szanse na to, że będzie trzeba taką wtyczkę aktualizować są niewielkie. Idealnym przykładem jest właśnie wspomniany powyżej widget z najważniejszymi informacjami, wtyczka dodająca kod Google Analytics (statystyki) czy Google Tag Manager.

W ten sposób dodaje również własne typy postów, czy taksonomię – zabezpieczając te ustawienia/zmiany przed zniknięciem wraz z wyłączeniem jakiejś wtyczki, czy zmianą motywu. Czasem też, dzięki priorytetowi przy wczytywaniu – w kolejności alfabetycznej, jeszcze przed normalnymi wtyczkami – można w ten sposób zmodyfikować pewne działania innych wtyczek…

(!) Zgłoś błąd na stronie
Potrzebujesz profesjonalnej pomocy? Skontaktuj się z nami!

Spodobał Ci się artykuł? Zapisz się do naszego Newslettera - ZERO SPAMu, same konkrety, oraz dostęp do dodatkowych materiałów przeznaczonych dla subskrybentów!

Na podany adres e-mail otrzymasz od nas wiadomość e-mail, w której znajdziesz link do potwierdzenia subskrypcji naszego Newslettera. Dzięki temu mamy pewność, że nikt nie dodał Twojego adresu przez przypadek. Jeśli wiadomość nie przyjdzie w ciągu najbliższej godziny (zazwyczaj jest to maksymalnie kilka minut) sprawdź folder SPAM.

Patryk

CEO Webinsider.pl, a do tego CTO, CIO, CFO, CMO, CSO, COO i CRO ;-)
Pasjonat nowych technologii - od sprzętu po oprogramowanie, od serwerów po smartfony i rozwiązania IoT. Potencjalnie kiepski bloger, bo nie robi zdjęć "talerza" zanim zacznie jeść.

Dumny przyjaciel swoich psów :-)