Kurs "WordPress: Pierwsze kroki" (bezpłatna lekcja)

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 | Lub postaw nam kawę :-)
LUTy dla D-Cinelike (DJI Mini 3 Pro, DJI Avata, OSMO Pocket) od MiniFly
Wdrożenie Omnibusa w sklepie na WooCommerce
Jak (legalnie) latać dronem w Kategorii Otwartej
Kurs "WordPress: Pierwsze kroki" (bezpłatna lekcja)
Patryk
Kurs "WordPress: Pierwsze kroki" (bezpłatna lekcja)