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

plugins_url()WP 2.6.0

Получает URL папки плагинов или mu (must use) плагинов (без слэша на конце).

Дополнить полученный URL можно указав первый параметр $path.

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

Использует константы: WP_PLUGIN_URL или WPMU_PLUGIN_URL в качестве базы для создания итогового URL.

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

  2. Функцию не рекомендуется вызывать из глобального контекста плагина. Её лучше вызывать позже, после того как все плагины подключатся - это хук plugins_loaded и любые более поздние хуки. Нужно это, чтобы быть уверенным, что на хуке plugins_url уже висят функции, которые могут добавить другие плагины, для изменения результата работы этой функции.

Используйте plugin_dir_url( __FILE__ ) в основном файле плагина, чтобы получить URL на основную папку плагина.

Основа для: plugin_dir_url()
1 раз — 0.000034 сек (очень быстро) | 50000 раз — 0.71 сек (очень быстро)
Хуки из функции

Возвращает

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

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

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

Примеры

1

#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">.
0

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

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

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

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

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

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

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

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

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

0

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

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

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

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

Список изменений

С версии 2.6.0 Введена.

Код plugins_url() WP 6.1.1

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 );
}
6 комментариев
    Войти