plugin_basename()WP 1.5.0

Получает имя плагина - относительный путь до файла плагина (от каталога плагинов, MU плагинов) по переданному пути на файл.

Отрезает путь до папки плагинов из указанного пути до папки/файла плагина. Оставляет путь от папки плагина до указанного файла плагина включительно.

Путь получается без начального слэша: my-plugin/my-plugin.php.

Использует константы: WP_PLUGIN_DIR и WPMU_PLUGIN_DIR. Использовать эти константы напрямую не рекомендуется.

Если плагин состоит из одного PHP файла и лежит непосредственно в папке plugins.

Для плагина, состоящего из одного PHP файла (например, wp-content/plugin.php) и для must-use plugin (например, wp-content/mu-plugins/plugin.php), plugin_basename( __FILE__ ) вернет plugin.php.

1 раз — 0.0000212 сек (очень быстро) | 50000 раз — 0.17 сек (очень быстро) | PHP 7.4.33, WP 6.2.2

Хуков нет.

Возвращает

Строку. Путь от папки плагина до файла плагина без слэшей на концах.

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

plugin_basename( $file );
$file(строка) (обязательный)
Абсолютный путь до файла или папки плагина.

Примеры

0

#1 Предположим что файл плагина находится по такому пути:

/home/www/wp-content/plugins/my-plugin/my-plugin.php
тогда вызвав plugin_basename мы получим следующее:

$x = plugin_basename(__FILE__); // my-plugin/my-plugin.php

Заметки

  • Global. Массив. $wp_plugin_paths

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

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

Код plugin_basename() WP 6.5.2

function plugin_basename( $file ) {
	global $wp_plugin_paths;

	// $wp_plugin_paths contains normalized paths.
	$file = wp_normalize_path( $file );

	arsort( $wp_plugin_paths );

	foreach ( $wp_plugin_paths as $dir => $realdir ) {
		if ( str_starts_with( $file, $realdir ) ) {
			$file = $dir . substr( $file, strlen( $realdir ) );
		}
	}

	$plugin_dir    = wp_normalize_path( WP_PLUGIN_DIR );
	$mu_plugin_dir = wp_normalize_path( WPMU_PLUGIN_DIR );

	// Get relative path from plugins directory.
	$file = preg_replace( '#^' . preg_quote( $plugin_dir, '#' ) . '/|^' . preg_quote( $mu_plugin_dir, '#' ) . '/#', '', $file );
	$file = trim( $file, '/' );
	return $file;
}