Intereting Posts
Тип сообщения после входа в систему, который перенаправляет роль пользователя на страницу Страница параметров темы, включенная с require_once * .php в functions.php, больше не отображается Выпадающее меню для отображения последнего / популярного сообщения – Архивная страница WPML в пользовательских шаблонах страниц Исключить пользовательский тип сообщения из поиска по настраиваемому значению поля? Новое сообщение об ошибке WordPress – не видели этого раньше Как получить изображение вложения из сообщения и вывести его Ползунок, который позволяет динамически изменять изображение или текст из другого плагина Ограничить the_excerpt в первой точке (.) Предложения Как можно глобально выделить выделенный текст? Проверьте, доступно ли следующее сообщение и выводит ссылку Максимальное количество сообщений и ограничение памяти Как получить все входные данные пользователя в buddypress Получать содержание страницы для отображения в Bootstrap Modal

Получить URL-адрес определенного файла

У меня есть файл, который может быть включен в плагин или в тему. Каков наилучший способ получить URL-адрес папки файла (изнутри файла)?

Редактировать:

Я сейчас использую это сейчас

home_url( '/' . str_replace( ABSPATH, "", dirname( __FILE__ ) ) ); 

Дайте мне знать, есть ли какие-либо проблемы с этим / есть лучший способ.

Solutions Collecting From Web of "Получить URL-адрес определенного файла"

Использование ABSPATH и home_url() может не работать, если установка wp находится в другой директории с URL-адресом, на котором она отображается. Вы должны проверить это.

Моя мысль заключается в использовании каталога содержимого, поскольку место для замены может быть более надежным, так как вы можете передать полученный путь в content_url() который учитывает, где находится установка WP:

 function get_file_url( $file = __FILE__ ) { $file_path = str_replace( "\\", "/", str_replace( str_replace( "/", "\\", WP_CONTENT_DIR ), "", $file ) ); if ( $file_path ) return content_url( $file_path ); return false; } 

Это может быть упрощено только для unix, но при этом поддерживается поддержка окон.

См. Определение плагинов и каталогов содержимого .

 plugins_url( 'filename', __FILE__ ); 

… возвращает полный URI к файлу в вашем плагине. Для тем, которые вы используете:

 get_stylesheet_directory_uri() . '/path/to/file'; 

Я предлагаю вам использовать фильтр.

В вашем файле, где-то в самом начале, включите что-то вроде строк:

 add_filter( 'wpa45165_resource_url', 'wpa45165_resource_url_finder' ); function wpa45165_resource_url_finder( $url ) { $url = /* Some code to generate the url from WP_SITEURL and dirname() */; return $url; } 

Затем в коде, который должен ссылаться на файл, примените фильтр к пустой строке:

 $include_url = apply_filters( 'wpa45165_resource_url', '' ); 

Почему бы вам не написать оба случая и проверить, какой из них фактически указывает на реальный файл:

 function dogbert_library_get_file_path($filename) { // As you might put your file in a folder, just configure this path $path_to_file = "files/" .$filename; // get_theme_root() doesn't give trailing slash $themeFile = get_theme_root() ."/" .get_current_theme() ."/" .$path_to_file; // plugin_dir_path does give trailing slash $pluginFile = plugin_dir_path( __FILE__ ) .$path_to_file ; // As we are at filesystem layer, we can use file_exists to check if(file_exists($themeFile)){ return $themeFile; } else if(file_exists($pluginFile)) { return $pluginFile; } else { // Return empty as a fallback... return ""; } } 

Это лучший вариант, который я бы увидел.

 $path = dirname(__FILE__); 

должен сделать трюк.