Zastanawiam się, jak mogę znaleźć informacje o pluginie (slug = nazwa wewnętrzna używana przez WordPress do aktualizacji wtyczek i określenia, które wtyczki są aktualnie aktywne)? Zwykle jest to nazwa folderu wtyczki, ale jeśli wtyczka nie ma folderu, jest to nazwa jego pliku (na przykład hello.php). Czy są jakieś inne wyjątki?
- Czy małe i wielkie litery mają znaczenie?
- Czy wtyczka może mieć inny ślimak niż nazwa folderu? Co jeśli jest wtyczka o nazwie hello.php i inna /hello.php/hello.php?
plugins
plugin-development
slug
Paweł
źródło
źródło
Odpowiedzi:
Ciąg używany w WordPress do identyfikacji wtyczki to:
… Gdzie
$file
jest plik z nagłówkami wtyczek .Więc jeśli jesteś we wtyczce, zdobądź ślimak z:
źródło
dirname(plugin_basename(__FILE__))
.Jeśli zainstalujesz WP-CLI , możesz uzyskać listę wtyczek z ich informacją o wersji i wersją z wiersza poleceń:
> wp plugin list
Wiem, że prawdopodobnie nie tego chcesz, jeśli potrzebujesz znaleźć informacje o kodzie, ale pomogło mi to podczas pracy z wtyczką TGM-Plugin-Activation.
Trudno mi pracować z WordPress bez WP-CLI, ogólnie jest to bardzo przydatne narzędzie do wielu typowych zadań związanych z WordPress.
źródło
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 :)
źródło
Tylko dla wyjaśnienia, ponieważ oryginalny post.
Znalazłem informacje o wtyczce wtyczki, przechodząc najpierw do folderu wtyczki, a następnie otwierając folder powiązany z wtyczką i wreszcie znajdując plik, w którym znajduje się poniższy kod. Po znalezieniu tego pliku nazwa pliku minus rozszerzenie powinna być twoją wtyczką.
Na przykład, jeśli znalazłem poniższy kod w pliku o nazwie advanced-plugin-awesomeness.php, moim ślimakiem byłaby zaawansowana wtyczka-awesomeness.
Mam nadzieję że to pomoże!
źródło
Niestety ślimak jest zwracany przez Update API, odpowiedź na to pytanie nie jest tak oczywista, chyba że zapytasz o sam API. Jeśli jednak chcesz zobaczyć listę swoich aktualnych wtyczek i powiązanych danych wtyczek, możesz po prostu zrobić:
Ale nie będzie to zawierało informacji o nowo zainstalowanej wtyczce przez kolejne 12 godzin, musiałbyś dla nich zrobić coś innego, np. zastosowanie zmodyfikowanej wersji kodu z
wp_update_plugins
wwp-includes/update.php
...Po zrobieniu tego, aby to przetestować, wydaje się potwierdzać, że niezależnie od nazwy pliku wtyczki, lokalizacji lub wielkich liter, tak naprawdę
Plugin Name
to generuje aktualizację, najprawdopodobniej za pośrednictwemsanitize_title
. Dlatego uważam, że poprawna odpowiedź powinna brzmieć:źródło
Możesz uzyskać nazwę folderu wtyczki (PHP 5.3 +), przekazując DIR do plugin_basename (), w następujący sposób:
źródło
Spróbuj tego:
źródło
W przypadku większości wtyczek „ślimak” będzie taki sam jak nazwa katalogu. Chociaż ludzie .org mogą ustawić nazwę katalogu na cokolwiek chcą.
źródło