Dziś odpowiedź na dwa proste pytania – Jak działają Wtyczki wymuszone (Must Use Plugins) oraz czym są Zamienniki tzw Drop-ins w WordPress.
Czym są wtyczki Must Use Plugins (MU-PLUGINS)?
Wtyczki MU są dostępne jako dodatkowa funkcjonalność od WordPress 2.8 – jednak mało kto o nich wie lub nie wie jak je używać. Wtyczki MU Plugins są uruchamiane zawsze i niezależnie od tego czy są skonfigurowane w kokpicie czy nie – uruchamiane są w pierwszej kolejności za każdym razem, kiedy ładowana jest strona i kokpit. Nie można ich edytować czy wyłączyć poprzez kokpit – są widoczne jako Wtyczki wymuszane.
Must Use plugins, aby działały muszą być ulokowane w odpowiednim folderze – /wp-content/mu-plugins , jednak można zmienić położenie tego folderu z pomocą zmiennej WPMU_PLUGIN_DIR w wp-config.php.
define( 'WPMU_PLUGIN_DIR', WP_CONTENT_DIR . '/mu-plugins' ); // Pełna ścieżka, bez końcowego ukośnika
Bez odpowiednio napisanego loadera plik z wtyczką musi być umieszczony bezpośrednio w folderze, a nie w podfolderze jak w przypadku zwykłych wtyczek. Przykład loadera wtyczki wymuszanej z podfolderu znajduje się poniżej i można go nazwać dowolnie np. mu-loader.php
require(WPMU_PLUGIN_DIR . '/wtyczka/plik-wtyczki.php');
Różnica pomiędzy zwykłymi wtyczkami, a wtyczkami wymuszonymi jest taka, że te drugie nie muszą posiadać nagłówków typowych dla normalnych wtyczek – chodź wskazane jest, aby posiadała nazwę i opis, aby w przypadku ich większej ilości wiedzieć za co dana wtyczka odpowiada.
Jeżeli wtyczką wymuszoną modyfikujesz funkcję innej wtyczki lub motywu koniecznie użyj if function exists lub if class_exists, ale poprawne jest też sprawdzenie czy dana wtyczka jest aktywna. [Przykłady na GitHub]
Czym są Zamienniki (Dropins)?
Wg opisu wewnątrz kokpitu – „Zamienniki są zaawansowanymi wtyczkami umieszczanymi w katalogu wp-content, które, jeśli są obecne, zastępują domyślne procedury WordPressa w określonych działaniach.”
Niestety zamienników nie ma zbyt wiele, a ich lista zdefiniowana jest w pliku wp-admin/includes/plugin.php – część dotyczy zwykłych instalacji, a część działa tylko jeżeli korzystamy z sieci witryn. [Zobacz kod]
Aby zamienniki działały muszą znajdować się w katalogu /wp-content/ i być standardowymi plikami PHP.
Lista Zamienników
- advanced-cache.php – Zaawansowana wtyczka CACHE działająca ze zmienną WP-CACHE
- db.php – Własna klasa obsługi bazy danych, uruchamiana zawsze, jeżeli istnieje
- db-error.php – Własny błąd połączenia z bazą danych (więcej tutaj)
- install.php – Własny skrypt instalacyjny
- maintenance.php – Własny komunikat przerwy konserwacyjnej
- object-cache.php – przydatne szczególnie przy dużych stronach, ogranicza zapytania do bazy danych zapisując odpowiedzi z bazy na dysk i pobiera dane z niego, a nie poprzez ponowne połączenia z bazą.
- sunrise.php – Używana tylko w multisite i ładowana w pierwszej kolejności, wymaga dodania parametru do WP-CONFIG i przydaje się m.in. do mapowania domen w WordPress MS.
- blog-deleted.php – Własny błąd z informacją o usunięciu bloga z Sieci witryn
- blog-inactive.php – Własny błąd z informacją o nieaktywnej stronie w sieci witryn
- blog-suspended.php – Własny błąd z informacją o zawieszeniu bloga lub strony w Sieci witryn WordPress MultiSite