Różnica między plikiem wtyczki (głównym) a ślimakiem wtyczki to miejsce, w którym Kodeks WordPress mógłby zrobić znacznie więcej. Rozumiem twoje zamieszanie, ponieważ czułem je zbyt niedawno (zmieszane z frustracją).
Tego się nauczyłem, wykonując „pracę detektywistyczną” w kodzie podstawowym WordPress.
Plik wtyczki
Jest to unikalny sposób, w jaki WordPress identyfikuje i rejestruje wtyczkę. Składa się z katalogu wtyczki ORAZ głównego pliku wtyczki (ten z nagłówkiem pliku zawierającym różne szczegóły wtyczki, takie jak wersja, autor itp.).
Wyglądałoby to tak: your-plugin-directory/main-file.php
Jeśli spojrzysz na dane aktywnych wtyczek (zwrócone przez get_option( 'active_plugins' )
), zobaczysz, że WordPress potrzebuje tylko tego pliku wtyczek do prawidłowej identyfikacji wtyczek.
Możesz myśleć o tym jak o głównej ścieżce względnej pliku wtyczki (względem wp-content/plugins/
katalogu, który jest). Możesz „skomponować” ścieżkę bezwzględną głównego pliku wtyczki za pomocą czegoś takiego:trailingslashit( WP_PLUGIN_DIR ) . $plugin_main_file
Sam rdzeń generuje plik wtyczki w następujący sposób:
$plugin_main_file = plugin_basename( trim( $plugin_main_file_absolute_path ) );
Ślimak wtyczki
Można by się spodziewać, że „ślimak” wtyczki będzie jakimś standardowym identyfikatorem wtyczki, podobnie jak „ślimak postowy” dla postów - więc możesz użyć tego „ślimaka”, aby dostarczyć go do podstawowych funkcji WordPressa i zacząć działać.
Nie całkiem. Po przeszukaniu rdzenia pod kątem odniesień do wtyczek pluginów (lub tematów, które się liczą) i znalezieniu prawie niczego, myślę, że mam to do zrozumienia.
Jedyne prawdziwe ślimaki to rzeczy dostępne za pośrednictwem unikalnego adresu URL: posty, strony, taksonomie itp. To właśnie o to chodzi w tym, żeby wziąć nazwę czegoś (np. Tytuł postu) i wygenerować wersję przyjazną dla adresu URL: użyć w adresie URL.
Ale gdzie używamy „ślimaków” kompozycji / wtyczek w adresach URL?
Nie robimy tego na indywidualnych instalacjach WordPress - ani w adminie WP, ani w interfejsie użytkownika.
Istnieje jednak miejsce bardzo uwikłane w kod WordPress, witryna WordPress.org. Ludziom trudno jest rozróżnić te dwa elementy, w tym fakt, że programiści często uważają, że motyw WordPress.org lub wtyczki powinny działać tak samo, jak post lub strona.
Służą do tego samego celu, ale na osobnych stronach internetowych. Na WordPress.org są one używane do jednoznacznej identyfikacji motywu od innych oraz wtyczki od reszty (w takich URL-ach https://wordpress.org/plugins/akismet/
).
Ale jeśli chodzi o poszczególne instalacje WordPress, nie można zagwarantować tej samej wyjątkowości, ponieważ nie ma uprawnień do egzekwowania tego (jak na WordPress.org). Może działać, jeśli wszystkie wtyczki i motywy pochodzą z WordPress.org, ale na szczęście tak nie jest.
Co robi kod WordPress z motywami / wtyczkami?
Podstawowy kod WordPress nie polega na ślimakach motywu / wtyczki do wykonywania takich czynności, jak instalowanie, aktywowanie, aktualizowanie, usuwanie motywów lub wtyczek.
W przypadku motywów opiera się on na katalogu motywów, ponieważ głównym punktem wejścia do motywu jest style.css
plik (nie można użyć innego pliku CSS do przechowywania nagłówka szczegółów motywu).
W przypadku wtyczek opiera się na katalogu wtyczek ORAZ głównym pliku wtyczek , ponieważ wtyczki mogą wywoływać swój główny plik w dowolny sposób.
Jedyną rzeczą, dla której rdzeń używa ślimaków theme / plugins, jest obsługa szablonów i wtyczek z katalogu WordPress.org: pobieranie list wtyczek, sprawdzanie aktualizacji, raportowanie z powrotem do danych użycia katalogu i tak dalej.
Podsumowując informacje o ślimakach wtyczek: za każdym razem, gdy znajdziesz dane wtyczki wraz z slug
wpisem, 99% czasu będzie odnosić się do ślimaka wtyczki WordPress.org.
Jak idziemy o identyfikację wtyczek?
Jeśli chcesz programowo aktywować, zaktualizować, dezaktywować lub usunąć określoną wtyczkę z instalacji WordPress, musisz użyć pliku wtyczki. Możesz to zrobić w następujący sposób z głównego pliku wtyczki:
$plugin_file = plugin_basename( __FILE__ );
Jeśli chcesz kierować reklamy na określoną wtyczkę z innej wtyczki, sprawy stają się nieco trudniejsze, ponieważ musisz polegać na „zgadywaniu”.
Możesz na stałe wpisać nazwę wtyczki, wyszukać wtyczkę na liście wszystkich wtyczek (patrz get_plugins () ) i pobrać plik wtyczki z tego miejsca.
Jeśli znasz klasę lub funkcję zdefiniowaną przez tę wtyczkę, możesz użyć refleksji (zobacz tę odpowiedź dla klas i tę dla funkcji).
Mam nadzieję, że pomoże to Tobie i innym osobom, które mogą mieć trudności z radzeniem sobie z „ślimakami wtyczek”. Mogło mi to zaoszczędzić kilka godzin :)