WordPress как на ладони
wordpress jino

plugins_url() WP 2.6

Получает URL на директорию плагинов или mu (must use) плагинов (без слэша на конце). Если указать первый параметр $path, то он будет добавлен к УРЛ.

Также можно использовать волшебную PHP константу __FILE__ для второго параметра, который сравнит указанный путь и полный путь до файла из которого вызывается функция, и дополнит недостающий путь между директорией плагинов и указанным файлом.

Чтобы получить путь до каталога плагинов используйте константу: WP_PLUGIN_DIR.

Используется в: plugin_dir_url().
✈ 1 раз = 0.000034с = очень быстро | 50000 раз = 0.71с = очень быстро
Хуки из функции:
Возвращает

Строку. URL до указанного файла плагина.

Использование

plugins_url( $path, $plugin );
$path(строка)
Путь до файла плагина, полный URL на который нужно получить, относительно каталога плагинов.
По умолчанию: нет
$plugin(строка)
Путь после директории плагинов, который должен быть после каталога плагинов и до указанного файла в первом параметре. В этом параметре часто используется константа __FILE__ смотрите примеры.
По умолчанию: нет

Примеры

#1. Демонстрация работы функции:

echo plugins_url();
// вернет: http://wp-kama.ru/wp-content/plugins

echo plugins_url('plugin-name/style.css');
// вернет: http://wp-kama.ru/wp-content/plugins/plugin-name/style.css

#2. Динамическое указание пути до файла плагина

Мы можем указать путь в первом параметре жестко: 'plugin-name/style.css', но в этом случае, если мы переименуем папку плагина, то ссылка окажется битой, чтобы этого не произошло, можно использовать __FILE__ во втором параметре, тогда функция сама допишет недостающий путь между папкой плагинов и указанным файлом.

Допустим, папка нашего плагина называется plugin-name и в ней лежит файл style.css, нам нужно получить ссылку на этот файл, пишем так:

$plugins_url = plugins_url('style.css', __FILE__);
echo $plugins_url;

// вернет: http://site.ru/wp-content/plugins/plugin-name/style.css

В этом случае функция должна вызываться из той же директории, где лежит файл.

#2.1. Еще одни пример с __FILE__

В папке плагина есть каталог images и файл wordpress.png, и в этой же папке лежит исполняемый php файл, в котором нам нужно получить ссылку на картинку, тогда в нем используем такой код:

echo '<img src="' . plugins_url( 'images/wordpress.png' , __FILE__ ) . '" > ';

// получим: <img src="http://www.example.com/wp-content/plugins/my-plugin/images/wordpress.png">.

#2.3. Вызов из подкатегории категории плагина

Если plugins_url() вызывается из файла, который находится в подкаталоге плагина, то во втором параметре нужно использовать dirname():

echo '<img src="' . plugins_url( 'images/wordpress.png' , dirname(__FILE__) ) . '" > ';

Тут во втором параметре мы указали путь до родительской директории каталога файла из которого вызывается функция.

Заметки

  1. Не рекомендуется использовать константы wordpress для указания путей, такие как: WP_PLUGIN_URL, WPMU_PLUGIN_URL.

  2. Чтобы изменить результат работы plugins_url, используйте хук plugins_url.

  3. plugins_url() не рекомендуется вызывать из глобального контекста плагина, её лучше цеплять на хуки, такие как: init или admin_init, чтобы быть уверенным, что хуки plugins_url уже сработали. Это важный момент в работе плагинов, чтобы они правильно работали, ведь другие плагины могут изменять результат работы plugins_url(), например mu-plugins подключаются раньше обычных плагинов.

Код plugins url: wp-includes/link-template.php WP 4.8.2

<?php
function plugins_url( $path = '', $plugin = '' ) {

	$path = wp_normalize_path( $path );
	$plugin = wp_normalize_path( $plugin );
	$mu_plugin_dir = wp_normalize_path( WPMU_PLUGIN_DIR );

	if ( !empty($plugin) && 0 === strpos($plugin, $mu_plugin_dir) )
		$url = WPMU_PLUGIN_URL;
	else
		$url = WP_PLUGIN_URL;


	$url = set_url_scheme( $url );

	if ( !empty($plugin) && is_string($plugin) ) {
		$folder = dirname(plugin_basename($plugin));
		if ( '.' != $folder )
			$url .= '/' . ltrim($folder, '/');
	}

	if ( $path && is_string( $path ) )
		$url .= '/' . ltrim($path, '/');

	/**
	 * Filters the URL to the plugins directory.
	 *
	 * @since 2.8.0
	 *
	 * @param string $url    The complete URL to the plugins directory including scheme and path.
	 * @param string $path   Path relative to the URL to the plugins directory. Blank string
	 *                       if no path is specified.
	 * @param string $plugin The plugin file path to be relative to. Blank string if no plugin
	 *                       is specified.
	 */
	return apply_filters( 'plugins_url', $url, $path, $plugin );
}

Cвязанные функции

Из метки: URL (УРЛ Ссылка)

Еще из раздела: Плагины, хуки

plugins_url 4 комментария
  • Алексей @

    Здравствуйте! Как у вас реализовано вот это:
    ▸ Функции WP ▸ Плагины, Фильтры (API) ▸ Плагины ▸
    Никак не могу найти, как сделать строку пути без использования родительских страниц (если такое возможно). Мне надо, чтобы была строка пути как в меню! Проблема в том, что у меня почти 2000 страниц и переделывать всё не хочется, к тому же появится куча редиректов, что тоже не очень...

    Ответить3.2 года назад #
    • Kama4464

      Это сделано с помощью моих хлебных крошек. Я там код немного изменил под этот сайт. Там в самом конце функции, перед строкой $home = sprintf($patt, g..., такой код добавлен:

      // замена ссылки на архивную страницу для типа записи   
      if( $post->post_type == 'func' )
      	$home_after = sprintf($patt, '/functions', 'Функции WP'). $sep;
      Ответить3.2 года назад #
  • Web-Blog21 cайт: web-blog.su

    Не подскажете функцию, для вывода страницы настроек плагина?

    Поясню: есть плагин, у него имеется несколько страниц с настройками и главная страница с описание на которой я хотел бы продублировать основное меню плагина, в общем разместить ссылки в виде картинок по категориям настроек!

    Ответить1.9 года назад #

Здравствуйте, !

Ваш комментарий