Знайдіть шлях до іншого плагіна


10

Щоб отримати шлях до плагіна, ви можете скористатися, plugin_dir_path(__FILE__)але це, очевидно, потрібно викликати всередині плагіна.

Як можна надійно отримати шлях до плагіна B ( pluginb/pluginb.php) зсередини плагіна A?

Редагувати. Передбачається, що ви знаєте, що ви використовуєте плагін, який ви шукаєте (насправді ви можете їх отримати get_plugins()). Але я хотів би, щоб це працювало взагалі.


Чи це стосується будь-якого плагіна? або один / кілька зокрема? Якщо останні, чи це вони ваші власні, чи публічні випуски?
TheDeadMedic

Тож я припускаю, що ви знаєте, кулі плагіна, який ви шукаєте: наприклад pluginb/pluginb.php, але його третьої сторони.
Стівен Гарріс

Відповіді:


9

Моя найкраща здогадка:

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

return $dir;

Однак тут все ще існує припущення про "базове ім'я" плагіну - добре написаний плагін все одно буде функціонувати навіть тоді, коли його каталог та / або основний файл перейменовано (з будь-якої причини).

Що стосується мого оригінального коментаря - залежно від того, про який сторонній плагін йдеться, багато авторів визначають власні методи / константи, щоб утримувати шлях плагіна - було б сенсом перевірити їхнє існування та використовувати їх замість цього (якщо вони доступні ).


Ну добре, я оновив питання :). Слупку плагінів ви можете отримати від get_plugins()- у моєму випадку використання достатньо. Якщо ви користуєтеся певним плагіном, і нічого кращого немає, я думаю, ви можете шукати плагін через ім'я в get_plugins().
Стівен Гарріс

+1 В ідеалі хотілося б уникати використання констант, але це рішення принаймні перевіряє при їх використанні :) - і як ядро, як здається, робить справи.
Стівен Гарріс

2

Отже, одним із способів є виклик plugin_dir_path()у поточному плагіні та заміна власного імені каталогів плагінів на те, що використовується у плагіні плагіна, який ви шукаєте ( pluginb/pluginb.php):

Тож у нашому плагіні plugina/plugina.php,

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

Я б радив проти цього, оскільки існує припущення, що плагін B знаходиться в тому ж каталозі, що і A (що не обов'язково має бути так, ala MU плагіни).
TheDeadMedic

Дякую, подумав, що я пропущу :)
Стівен Гарріс

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.