Мне нужно получить текущий каталог плагинов, например
[wordpress_install_dir]/wp-content/plugins/plugin_name
(если getcwd()
вызывается из плагина, он возвращает [wordpress_install_dir]
, корень установки)
Спасибо за помощь
Мне нужно получить текущий каталог плагинов, например
[wordpress_install_dir]/wp-content/plugins/plugin_name
(если getcwd()
вызывается из плагина, он возвращает [wordpress_install_dir]
, корень установки)
Спасибо за помощь
Глядя на свой ответ @Bog, я думаю, ты хочешь;
$plugin_dir_path = dirname(__FILE__);
__DIR__
, которая делает то же самое.
- person dave1010; 09.06.2011
plugin_dir_path( $file )
- это просто оболочка для trailingslashit( dirname( $file ) )
- я бы сказал, что это не больше, чем у меня, для будущего; единственное отличие — косая черта в конце.
- person TheDeadMedic; 04.04.2012
dirname( __FILE__ ) . '/'
. Все остальное может поставить под угрозу функциональность любого плагина, использующего его.
- person TheDeadMedic; 05.04.2012
Почему бы не использовать основную функцию WordPress, разработанную специально для этой цели?
<?php plugin_dir_path( __FILE__ ); ?>
См. документацию Кодекса здесь.
У вас также есть
<?php plugin_dir_url( __FILE__ ); ?>
если вы ищете URI, а не путь к серверу.
См. документацию Кодекса здесь.
IMO всегда лучше использовать метод самого высокого уровня, доступный в ядре, и это все. Это делает ваш код более перспективным.
plugins_url( 'images/image_inside_plugin_folder.png' , __FILE__ )
- person Tom Auger; 31.10.2011
plugin_dir_path
не обязательно получает каталог плагина, он получает родительский каталог пути, переданного в качестве первого аргумента. Поэтому, если __FILE__
не находится в каталоге плагинов, plugin_dir_path( __FILE__ )
не вернет каталог плагинов. См. дополнительную информацию о plugin_dir_path
.
- person Flimm; 11.10.2017
plugin_dir_url
.
- person Jovanni G; 27.04.2018
Это действительно даст желаемый результат:
<?php plugin_dir_url(__FILE__); ?>
http://codex.wordpress.org/Function_Reference/plugin_dir_url
Чтобы получить каталог плагина, вы можете использовать функцию Wordpress plugin_basename($file)
. Таким образом, вы должны использовать следующее, чтобы извлечь папку и имя файла плагина:
$plugin_directory = plugin_basename(__FILE__);
Вы можете комбинировать это с URL-адресом или путем к серверу каталога плагинов. Поэтому вы можете использовать константы WP_PLUGIN_URL
для получения URL-адреса каталога плагина или WP_PLUGIN_DIR
для получения пути к серверу. Но, как упоминал Mark Jaquith в комментарии ниже, это работает, только если плагины находятся в каталоге плагинов Wordpress.
Подробнее об этом читайте в кодексе Wordpress.
WP_PLUGIN_URL
или WP_PLUGIN_DIR
— плагины могут отсутствовать в каталоге плагинов.
- person Mark Jaquith; 20.08.2011
$full_path = WP_PLUGIN_URL . '/'. str_replace( basename( __FILE__ ), "", plugin_basename(__FILE__) );
Эта ссылка может помочь: http://codex.wordpress.org/Determining_Plugin_and_Content_Directories.
Попробуй это:
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-адрес плагина.
Начиная с WP 2.6.0 вы можете использовать метод plugins_url()
.
str_replace(site_url('/'), ABSPATH, plugins_url());
- person Idham Perdameian; 12.10.2017
Когда мне нужно получить каталог не только для плагинов (plugin_dir_path), но и более общий, вы можете использовать __DIR__
, он даст вам путь к каталогу файла, в котором вызывается . Теперь вы можете использовать functions.php или другой файл!
Описание:
Каталог файла. Если используется внутри включения, возвращается каталог включенного файла. Это эквивалентно dirname(
__FILE__
). Это имя каталога не имеет завершающей косой черты, если только оно не является корневым каталогом. 1
Если вы хотите получить текущий путь к каталогу в файле, для этого вы можете использовать магические константы __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__
магическая константа возвращает путь к каталогу на один уровень выше.
В основном файле PHP плагина это работает только в admin :
$plugin_data = get_plugin_data( __FILE__ );
$plugin_name = $plugin_data['Name'];