Как получить текущий каталог плагинов в WordPress? - PullRequest
35 голосов
/ 28 июня 2010

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

[wordpress_install_dir]/wp-content/plugins/plugin_name

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

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

Ответы [ 9 ]

68 голосов
/ 13 октября 2011

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

<?php plugin_dir_path( __FILE__ ); ?>

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

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

<?php plugin_dir_url( __FILE__ ); ?>

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

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

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

36 голосов
/ 28 июня 2010

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

$plugin_dir_path = dirname(__FILE__);
14 голосов
/ 21 февраля 2012

На самом деле вы получите желаемый результат:

<?php plugin_dir_url(__FILE__); ?>

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

8 голосов
/ 28 июня 2010

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

$plugin_directory = plugin_basename(__FILE__); 

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

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

3 голосов
/ 14 сентября 2011
$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.

2 голосов
/ 01 июля 2010

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

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;
    }

echo PluginUrl ();вернет текущий плагин url.

1 голос
/ 11 сентября 2014

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

Описание

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

1 голос
/ 03 мая 2014

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

0 голосов
/ 24 апреля 2018

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

$dir_path = plugin_dir_path( __FILE__ );

CurrentDirectory Path:

/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__ магическая константа возвращает путь к каталогу на один уровень выше.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...