Uzyskaj ścieżkę do innej wtyczki


10

Aby uzyskać ścieżkę do wtyczki, możesz użyć plugin_dir_path(__FILE__)- ale oczywiście należy ją wywołać z poziomu wtyczki.

Jak w wiarygodny sposób uzyskać ścieżkę do wtyczki B ( pluginb/pluginb.php) z wtyczki A?

Edycja: Zakłada się, że znasz ślimak wtyczki, której szukasz (właściwie możesz je pobrać get_plugins()). Ale chciałbym, żeby to działało ogólnie.


Czy dotyczyłoby to jakiejkolwiek wtyczki? czy w szczególności jeden / kilka? Jeśli to drugie, czy są to twoje własne czy publiczne wydania?
TheDeadMedic

Zakładam więc, że znasz informacje o wtyczce, której szukasz: np. pluginb/pluginb.phpAle jest to firma zewnętrzna.
Stephen Harris,

Odpowiedzi:


9

Moje najlepsze przypuszczenie to:

if ( ! is_file( $dir = WPMU_PLUGIN_DIR . '/pluginb/pluginb.php' ) ) {
    if ( ! is_file( $dir = WP_PLUGIN_DIR . '/pluginb/pluginb.php' ) )
        $dir = null;
}

return $dir;

Jednak niebezpieczeństwem jest nadal założenie „basename” wtyczki - dobrze napisana wtyczka będzie nadal działać, nawet jeśli jej katalog i / lub główny plik zostaną zmienione (z dowolnego powodu).

Wracając do mojego oryginalnego komentarza - w zależności od wtyczki innej firmy, o której mowa, wielu autorów definiuje swoje własne metody / stałe utrzymujące ścieżkę wtyczki - warto sprawdzić ich istnienie i użyć ich (jeśli są dostępne) ).


Ach, ok, zaktualizowałem pytanie :). Możesz pobrać wtyczkę z get_plugins()- w moim przypadku jest jej dość. Jeśli szukasz konkretnej wtyczki i nic lepszego nie jest dostępne, myślę, że możesz wyszukać wtyczkę po nazwie w get_plugins().
Stephen Harris,

+1 Idealnie chciałbym unikać używania stałych - ale to rozwiązanie przynajmniej sprawdza, kiedy ich używa się :) - i tak wygląda rdzeń.
Stephen Harris,

2

Tak więc jedną metodą jest wywołanie plugin_dir_path()w ramach bieżącej wtyczki i zastąpienie własnej nazwy katalogu wtyczek nazwą tej wtyczki, której szukasz ( pluginb/pluginb.php):

W naszym tak plug-in plugina/plugina.php,

$plugin_b = str_replace('plugina/','pluginb/pluginb.php',plugin_dir_path(__FILE__));
echo $plugin_b; //Prints path/to/pluginb/pluginb.php';

Odradzałbym to, ponieważ istnieje założenie, że wtyczka B znajduje się w tym samym katalogu co A (co niekoniecznie tak będzie, na przykład wtyczki MU).
TheDeadMedic,

Dzięki, pomyślałem, że będzie coś, za czym tęsknię :)
Stephen Harris,

Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.