Как конвертировать путь к файлу в URL этого же файла?
Как мне преобразовать путь файловой системы в URL? Я нашел некоторые общие решения на PHP, которые могут быть подвержены ошибкам.
Есть ли какой-то специфический способ сделать это в WordPress?

Что имеется в виду под или глобальным? Было бы полезно, если бы вы добавили объяснение, что делает ваш код, почему он помогает решить проблему и как его использовать.

Извините за краткость. Просто вставьте функцию выше в ваш код (например, в functions.php), и затем вы можете получить URL скрипта из PHP-файла вот так: $url = abs_path_to_url( dirname(__FILE__) . '/css/styles.css' );
предполагая, что папка css с файлом styles.css находится в той же папке, что и ваш скрипт.

здесь глобальный означает, что приведённая выше функция работает как в темах, так и в плагинах

Это зависит от того, в какой части 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 (или пути относительно них) соответственно.
