Как конвертировать путь к файлу в URL этого же файла?
Как мне преобразовать путь файловой системы в URL? Я нашел некоторые общие решения на PHP, которые могут быть подвержены ошибкам.
Есть ли какой-то специфический способ сделать это в WordPress?
Что имеется в виду под или глобальным? Было бы полезно, если бы вы добавили объяснение, что делает ваш код, почему он помогает решить проблему и как его использовать.
kaiser
Извините за краткость. Просто вставьте функцию выше в ваш код (например, в functions.php), и затем вы можете получить URL скрипта из PHP-файла вот так: $url = abs_path_to_url( dirname(__FILE__) . '/css/styles.css' ); предполагая, что папка css с файлом styles.css находится в той же папке, что и ваш скрипт.
Serge Liatko
здесь глобальный означает, что приведённая выше функция работает как в темах, так и в плагинах
Serge Liatko
Это зависит от того, в какой части WordPress среды вы находитесь.
Плагины
Если вы работаете в плагине, можно использовать plugins_url.
<?php
$url = plugins_url('css/admin.css', __FILE__);
Приведённый выше код вернёт путь относительно файла, переданного во втором аргументе. Например, если это главный файл плагина, вы можете получить что-то вроде http://example.com/wp-content/plugins/your-plugin/css/admin.css.
Также есть plugin_dir_url для получения URL директории. Распространённой практикой является определение константы с URL плагина в главном файле плагина.
<?php
/** plugin name: wpse216913 example */
define('WPSE216913_PLUGINURL', plugin_dir_url(__FILE__));
// wp_enqueue_style('example', WPSE216913_PLUGINURL.'css/admin.css');
Темы
Для тем следует использовать get_template_directory_uri или get_stylesheet_directory_uri.
get_template_directory_uri вернет URI директории родительской темы, если таковая имеется. get_stylesheet_directory_uri вернет URI дочерней темы, если она используется, или родительской в противном случае. Подробнее о различиях можно прочитать в кодексе. В теме twenty fifteen есть примеры использования этих функций.
wp_enqueue_style(
'twentyfifteen-ie',
get_template_directory_uri().'/css/ie.css',
array('twentyfifteen-style'),
'20141010'
);
Загрузки
Для загруженных изображений используйте wp_get_attachment_image_src. Возвращаемое значение также включает ширину и высоту изображения. Эта функция также позволяет указать желаемый размер.
Или можно использовать wp_get_attachment_url для получения URL вложения. Для изображений это вернет URL оригинального файла.
Если вам нужен URL (или путь) директории загрузок для кастомной загрузки или других целей, используйте wp_upload_dir, которая возвращает массив со всей необходимой информацией.
print_r(wp_upload_dir())
/*
Array
(
[path] => /path/to/wordpress/wp-content/uploads/2016/02
[url] => http://example.com/wp-content/uploads/2016/02
[subdir] => /2016/02
[basedir] => /path/to/wordpress/wp-content/uploads
[baseurl] => http://example.com/wp-content/uploads
[error] => false
)
*/
Другие полезные функции для работы с URL
Все они имеют одинаковую сигнатуру urlFunc($path, $scheme), и оба аргумента опциональны.
home_url возвращает путь относительно главной страницы сайта.
echo home_url('/example'); // http://example.com/example
site_url возвращает URL относительно директории с файлами WordPress. Например, если WordPress установлен в директорию wp...
echo site_url('/example'); // http://example.com/wp/example
admin_url возвращает URL относительно пути wp-admin. Полезно, когда нужен путь к admin-ajax.php.
echo admin_url('admin-ajax.php'); // http://example.com/wp/wp-admin/admin-ajax.php
Есть и другие функции, такие как content_url и includes_url, которые возвращают пути к директориям WP content и includes (или пути относительно них) соответственно.