Bezdepbonusu7Программирование: статьи и ответы

Вопрос

Как получить текущий каталог плагинов в WordPress?

Автор вопроса: bogОтветов: 10

Мне нужно получить текущий каталог плагинов, например

[wordpress_install_dir]/wp-content/plugins/plugin_name

(если getcwd() вызывается из плагина, он возвращает [wordpress_install_dir], корень установки)

Спасибо за помощь

pluginswordpressphp

Ответы

Ответ 1 · рейтинг 43 · TheDeadMedic

Глядя на свой ответ @Bog, я думаю, ты хочешь;

$plugin_dir_path = dirname(__FILE__);

Ответ 2 · рейтинг 78 · Tom Auger

Почему бы не использовать основную функцию WordPress, разработанную специально для этой цели?

<?php plugin_dir_path( __FILE__ ); ?>

См. документацию Кодекса здесь.

У вас также есть

<?php plugin_dir_url( __FILE__ ); ?>

если вы ищете URI, а не путь к серверу.

См. документацию Кодекса здесь.

IMO всегда лучше использовать метод самого высокого уровня, доступный в ядре, и это все. Это делает ваш код более перспективным.

Ответ 3 · рейтинг 14 · brenjt

Это действительно даст желаемый результат:

<?php plugin_dir_url(__FILE__); ?>

http://codex.wordpress.org/Function_Reference/plugin_dir_url

Ответ 4 · рейтинг 8 · stefanglase

Чтобы получить каталог плагина, вы можете использовать функцию Wordpress plugin_basename($file). Таким образом, вы должны использовать следующее, чтобы извлечь папку и имя файла плагина:

$plugin_directory = plugin_basename(__FILE__);

Вы можете комбинировать это с URL-адресом или путем к серверу каталога плагинов. Поэтому вы можете использовать константы WP_PLUGIN_URL для получения URL-адреса каталога плагина или WP_PLUGIN_DIR для получения пути к серверу. Но, как упоминал Mark Jaquith в комментарии ниже, это работает, только если плагины находятся в каталоге плагинов Wordpress.

Подробнее об этом читайте в кодексе Wordpress.

Ответ 5 · рейтинг 5 · manish nautiyal

$full_path = WP_PLUGIN_URL . '/'. str_replace( basename( __FILE__ ), "", plugin_basename(__FILE__) );
  • WP_PLUGIN_URL - адрес каталога плагинов.
  • WP_PLUGIN_DIR - путь сервера к каталогу плагинов

Эта ссылка может помочь: http://codex.wordpress.org/Determining_Plugin_and_Content_Directories.

Ответ 6 · рейтинг 2 · Pennywise83

Попробуй это:

function PluginUrl() {

        //Try to use WP API if possible, introduced in WP 2.6
        if (function_exists('plugins_url')) return trailingslashit(plugins_url(basename(dirname(__FILE__))));

        //Try to find manually... can't work if wp-content was renamed or is redirected
        $path = dirname(__FILE__);
        $path = str_replace("\\","/",$path);
        $path = trailingslashit(get_bloginfo('wpurl')) . trailingslashit(substr($path,strpos($path,"wp-content/")));
        return $path;
    }

эхо-адрес плагина(); вернет текущий URL-адрес плагина.

Ответ 7 · рейтинг 1 · Idham Perdameian

Начиная с WP 2.6.0 вы можете использовать метод plugins_url().

Ответ 8 · рейтинг 1 · Francisco Corrales Morales

Когда мне нужно получить каталог не только для плагинов (plugin_dir_path), но и более общий, вы можете использовать __DIR__, он даст вам путь к каталогу файла, в котором вызывается . Теперь вы можете использовать functions.php или другой файл!

Описание:

Каталог файла. Если используется внутри включения, возвращается каталог включенного файла. Это эквивалентно dirname(__FILE__). Это имя каталога не имеет завершающей косой черты, если только оно не является корневым каталогом. 1

Ответ 9 · Gufran Hasan

Если вы хотите получить текущий путь к каталогу в файле, для этого вы можете использовать магические константы __FILE__ и __DIR__ с функцией plugin_dir_path() как:

$dir_path = plugin_dir_path( __FILE__ );

Путь к текущему каталогу:

/home/user/var/www/wordpress_site/wp-content/plugins/custom-plugin/

__FILE__ магическая константа возвращает текущий путь к каталогу.

Если вы хотите подняться на один уровень выше текущего каталога. Вы должны использовать магическую константу __DIR__ как:

Текущий путь:

/home/user/var/www/wordpress_site/wp-content/plugins/custom-plugin/

$dir = plugin_dir_path( __DIR__ );

Путь на один уровень вверх:

 /home/user/var/www/wordpress_site/wp-content/plugins/

__DIR__ магическая константа возвращает путь к каталогу на один уровень выше.

Ответ 10 · Malki Mohamed

В основном файле PHP плагина это работает только в admin :

$plugin_data = get_plugin_data( __FILE__ );
$plugin_name = $plugin_data['Name'];

Перевод вопроса и ответов сообщества Stack Overflow, лицензия CC BY-SA. Оригинал на Stack Overflow.

Похожие материалы