it-roy-ru.com

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

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

[wordpress_install_dir]/wp-content/plugins/plugin_name

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

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

34
bog

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

$plugin_dir_path = dirname(__FILE__);
33
TheDeadMedic

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

<?php plugin_dir_path( __FILE__ ); ?>

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

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

<?php plugin_dir_url( __FILE__ ); ?>

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

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

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

66
Tom Auger

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

<?php plugin_dir_url(__FILE__); ?>

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

14
brenjt

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

$plugin_directory = plugin_basename(__FILE__); 

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

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

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

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

3
manish nautiyal

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

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.

2
Pennywise83

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

Описание:

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

1
Francisco Corrales Morales

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

1
Idham Perdameian

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

$dir_path = plugin_dir_path( __FILE__ );

Путь CurrentDirectory:  

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

0
Gufran Hasan