Intereting Posts
Моя контактная форма не реагирует Функция выделения для любого содержимого Crossposting из WP в Blogger с комментариями Как импортировать сообщения WordPress с изображениями с одного сайта WordPress на другой? Отображать значение настраиваемого поля в столбце страницы администратора Правильное регулярное выражение для кеша Nginx FastCGI? Оберните содержимое виджета с помощью div и получите внешний вид виджета снаружи? WP API post__not_in не работает Определить имя плагина из фильтра plugin_action_links Асинхронные загрузчики Javascript Второй цикл WP_Query показывает данные из основного запроса Отзывчивые изображения – добавление атрибутов srcset в пользовательские функции изображений Отображать отображаемый размер файла изображения, расширение, имя файла, тип, ориентацию? Использование WP_List_Table и search_box (): как разбивать найденные результаты поиска при отправке методом «Почта»? Карты Google WordPress в пользовательской теме

Получить 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__); 

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