# Must Use Plugins (MU-PLUGINS) i Zamienniki (Drop-ins) w WordPress 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**. ![](https://jaworowi.cz/wp-content/uploads/2017/02/wtyczki-wymuszone-mu-plugins-wordpress.jpg) ![](https://jaworowi.cz/wp-content/uploads/2017/02/wtyczki-wymuszone-wordpress-must-use-plugins.png) 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](https://gist.github.com/jaworowicz/3648306ea45913fd60f4ed01458cb22f)] ## **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.” ![](https://jaworowi.cz/wp-content/uploads/2017/02/zamienniki-dropins-wordpress.png) 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](https://gist.github.com/jaworowicz/066ffb45b490629686430b3ea3dad6c4)] Aby zamienniki działały muszą znajdować się w katalogu */wp-content/* i być standardowymi plikami PHP. ### **Lista Zamienników** ![](https://jaworowi.cz/wp-content/uploads/2017/02/dropins-wordpress.png) - ***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](https://jaworowi.cz/wordpress-zamiennik-dnia-jak-ustawi-wasny-bd-poczenia-baz-danych-2970.php)) - ***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