Dokumentacja WordPress do określania wtyczek i katalogów treści stwierdza, że:
WordPress korzysta z następujących stałych przy określaniu ścieżki do zawartości i katalogów wtyczek. Nie powinny być one używane bezpośrednio przez wtyczki lub motywy , ale są wymienione tutaj dla kompletności.
Przechodzi do listy WP_CONTENT_DIR
i WP_PLUGIN_DIR
wśród stałych, których twórcy motywów i wtyczek nie powinni używać, prawdopodobnie z tego powodu:
WordPress pozwala użytkownikom na umieszczenie katalogu wp-content w dowolnym miejscu, więc nigdy nie należy zakładać, że wtyczki będą w treści / wtyczkach wp, że przesyłanie będzie w treści wp / treści, lub że motywy będą w wp- treść / tematy.
Mark Jaquith komentuje tutaj również , że tych stałych nie należy używać:
Nie używaj WP_PLUGIN_URL lub WP_PLUGIN_DIR - wtyczki mogą nie znajdować się w katalogu wtyczek.
Jaki jest zatem akceptowany sposób odwoływania się do pełnej ścieżki do wtyczek, zawartości wp i folderów kompozycji bez użycia tych stałych?
Jako prosty przykład, aby wyświetlić pełną ścieżkę wszystkich zainstalowanych wtyczek, mogę to zrobić:
<?php
$plugins = get_plugins();
foreach ($plugins as $file => $details) {
echo WP_PLUGIN_DIR . '/' . $file . '<br>';
}
Który tworzy taką listę:
/var/www/wp-content/plugins/akismet/akismet.php
/var/www/wp-content/plugins/debug-bar/debug-bar.php
/var/www/wp-content/plugins/hello.php
(Może chciałbym to zrobić, gdybym pisał wtyczkę, aby umożliwić użytkownikowi selektywne archiwizowanie wtyczek, na przykład w ramach kopii zapasowej witryny).
Jeśli użycie WP_PLUGIN_DIR
jest nieprawidłowe, jaka jest sugerowana alternatywa? Nie ma odpowiednika wp_upload_dir()
dla wtyczek, motywów i folderu zawartości wp, który mogę znaleźć, co sprawia, że odwołanie się do potencjalnie błąkających się motywów i katalogów głównych wtyczek jest problematyczne.
źródło
WP_PLUGIN_DIR
, stąd moje pytanie tutaj.Odpowiedzi:
Plik referencyjny w bieżącej ścieżce lub głęboko zagnieżdżony
Aby odwołać się do bieżącej ścieżki
który działa we wtyczkach i motywach .
Odwołaj się do URl / URi we wtyczce
Aby wskazać wtyczkę lub plik motywu, użyj
który działa tylko we wtyczkach
Odwołaj się do URl / URi w
wp-admin
folderzeZawsze wskaż je
admin_url( 'some/path' );
. Jestget_admin_url()
też.Odwołaj się do URl / Uri w
wp-includes
folderzeWskaż je
includes_url( 'some/path' );
URl / URi w stosunku do strony głównej witryn
Jest
home_url( 'etc' );
lubget_home_url()
do tego. Podobne jestget_site_url()
isite_url()
. Więc też jestnetwork_home_url()
. I masznetwork_admin_url()
wp-content
lub katalog o zmienionej nazwieMożesz ponownie zdefiniować
wp-content
nazwę folderu. Dlategocontent_url()
tam korzystasz .Jak uzyskać adres URL folderu wtyczek?
Po prostu użyj
plugins_url()
bez żadnych parametrów.Jeśli używasz go jako wtyczki, działa to również z wtyczkami MU.
EDYCJA # 1 Jeśli interesuje Cię ścieżka do bieżącej wtyczki, użyj
plugin_basename();
.EDYCJA 2 Jeśli interesują Cię wszystkie aktywne wtyczki na boku, użyj
wp_get_active_network_plugins();
.Jeśli nie korzystasz z wielu witryn, idź z
wp_get_active_and_valid_plugins();
. Uwzględnia to wiele lokalizacji / sieci. Pamiętaj, że weźmie to pod uwagę, jeśli nie jesteś na wielu stronach, ale maszsunrise.php
dropin.Równie dobrze możesz je odzyskać
get_option( 'active_plugins' );
, co nie jest zalecane, ponieważ nie uwzględnia filtrów i sprawdzania poprawności wtyczek, co zdarza się kilkakrotnie.Dalsza lektura
Ta lista jest długa. Więcej informacji można znaleźć w wynikach wyszukiwania w QueryPosts.com .
Ten artykuł idzie w absolutnej głębokości o wszystkich ścieżkach.
źródło
plugins_url()
zwraca adres URL do folderu wtyczek, a nie pełną ścieżkę do katalogu na serwerze. Czy istnieją podobne funkcje do obsługi katalogów, o których nie wiem? A może rada, aby nie używaćWP_PLUGIN_DIR
stałej, jest po prostu niewłaściwa?WP_PLUGIN_DIR
.Zwraca ścieżkę serwera katalogu bieżącej wtyczki:
Patrz: https://codex.wordpress.org/Function_Reference/plugin_dir_path
Nie należy mylić z:
(Zawiadomienie mnoga „plugin s ” na ten temat.)
Ponieważ nie chcesz zwracać nazwy katalogu wtyczek, musimy to usunąć. Oto funkcja, która zwraca katalog wtyczki i nazwę pliku:
Ale oczywiście nie chcemy też nazwy pliku wtyczki, więc
plugin_basename(__FILE__)
najpierw musimy go usunąć . Aby zwrócić nazwę pliku wtyczki:Aby użyć ich do zbudowania ścieżki do katalogu wtyczek , możemy użyć
str_replace()
funkcji czegoś takiego:I w razie potrzeby ten ostatni wiersz można oczywiście przypisać do zmiennej w celu ponownego użycia.
Zamiast:
Użyj czegoś takiego:
A później, w razie potrzeby:
źródło