How do I convert file system path to URL? I have found some general PHP solutions that can be error prone.
Is there some WordPress specific way to do it?
WordPress Development Stack Exchange is a question and answer site for WordPress developers and administrators. It only takes a minute to sign up.Sign up to join this community
Kind of depends on where you are in the WordPress environment.
If you're in a plugin, you can use
<?php $url = plugins_url('css/admin.css', __FILE__);
The above will give you the path relative to the file passed into the second argument. So if you're in the main plugin file you might get something like
plugin_dir_url to get the URL of a directory. One fairly common pattern is to define a constant with your plugin url in the main plugin file.
<?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 will return the parent theme's directory URI if there is a parent theme.
get_stylesheet_directory_uri will return the child theme's URI if there is a child theme, or the parent theme's otherwise. Read the codex for more on the differences. The twenty fifteen theme has some examples of how these are used.
wp_enqueue_style( 'twentyfifteen-ie', get_template_directory_uri().'/css/ie.css', array('twentyfifteen-style'), '20141010' );
wp_get_attachment_image_src for uploaded images. The return value will also include the width and height of the image. This also let's you say which size you want.
wp_get_attachment_url to retrieve the URL of the attachment that was uploaded. If used on images, this will return the URL of the original image.
If you need the URL (or path) of the upload directory so you can do something like a custom upload or otherwise, you can use
wp_upload_dir which returns an array with all the info you'll need.
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 ) */
All of these have the same signature,
urlFunc($path, $scheme), and both arguments are optionall.
home_url returns a path relative to the sites home page.
echo home_url('/example'); // http://example.com/example
site_url returns a URL relative to where the WordPress core files are. Say you had WordPress in the directory
echo site_url('/example'); // http://example.com/wp/example
admin_url returns a URL relative to the
wp-admin path. Useful when you need the path to
admin-ajax.php, for instance.
echo admin_url('admin-ajax.php'); // http://example.com/wp/wp-admin/admin-ajax.php
There are a few others like
includes_url which return the paths to the WP content and includes directories (or paths relative to them) respectively.