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ą…
Spis treści w artykule
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…
- Wakacje składkowe ZUS a zawieszenie działalności gospodarczej, czyli uważaj, bo być może nie będziesz mógł skorzystać (w 2024) - 1970-01-01
- Przykładowy kalkulator wyceny usługi druku 3D, czyli nie tylko materiał się liczy - 1970-01-01
- Home Assistant 2024.10, czyli nowa karta „nagłówek” i niedziałający TTS w ramach usługi Google Cloud - 1970-01-01
Nie złe rozwiązania :) Z prehistorii można zrozumieć, że osobom początkującym nie da się tego wyłapać :)
Podejrzewam, że nie tylko początkującym, bo jak już wiadomo o czym informacji szukać – to jest z górki/łatwo. Tylko najpierw ktoś musi wiedzieć, że tego szuka. A i bez dostępu do plików strony (FTP/SCP) nigdzie w WP nie widać, że w ogóle coś takiego na stronie jest – widać tylko efekty.
Można też połączyć to z możliwością utworzenia tego katalogu i zapisaniem do niego własnego pliku przez PHP – wystarczy, że mamy możliwość edycji plików motywu/wtyczek (więc na szczęście obcych można wykluczyć), i bez dostępu do FTP/SCP można jakiemuś administratorowi zrobić psikusa… ;-)
Zarządzam WP od 6 lat.. (20 maja 6 rok wdrożeń) i nigdy mi to do głowy nie wpadło, a właśnie sam tworzę wtyczkę dla każdej strony o nazwie „Funkcjonalności”. Dzięki temu wpisowi ten dzień stał się piękniejszy – chodź mniej technicznym klientom i tak będę ścinać uprawnienia… tak na wszelki wypadek.
Fajnie, że komuś (już) się przydało… :-)
A co do obcinania funkcjonalności – nie rezygnowałbym z tego, bo zazwyczaj mało który klient/użytkownik faktycznie potrzebuje zmieniać motyw, czy zarządzać wtyczkami, i tylko krzywdy może „sobie” narobić.
Fajną cechą wtyczek wrzuconych do katalogu „mu-plugins” jest też to, że nie trzeba ich ręcznie uruchamiać – wystarczy tylko wrzucić do tego folderu/katalogu, dzięki czemu można np. za pomocą skryptu i/lub SSH w szybki sposób dodać/zamienić taką wtyczkę na wielu stronach…
PS. Masz ISE (Internal Server Error) na stronie/domenie, chyba, że to tak celowo? ;-)
Niechcący :( Ale jak to mówi moja ulubiona koszulka „u mnie działa”, a monitoring nic nie zgłaszał.\
Generalnie zastanawiam się czy to nie wina Cloudflare bo bazę mam zupełnie innym serwerze a odkąd używam CF ciągle mam jakieś kwiatki. Chyba, że mówisz o innej niż jaworowi.cz stronie :)
Nie, mówię dokładnie o tej stronie (domena Twojego e-maila), i teraz faktycznie (już) działa (i u mnie).