plugins_url( string $path = '', string $plugin = '' ): string
Retrieves a URL within the plugins or mu-plugins directory.
Contents
Description
Defaults to the plugins directory URL if no arguments are supplied.
Parameters
-
$path
string Optional -
Extra path appended to the end of the URL, including the relative directory if $plugin is supplied.
Default:
''
-
$plugin
string Optional -
A full path to a file inside a plugin or mu-plugin.
The URL will be relative to its directory.
Typically this is done by passing__FILE__
as the argument.Default:
''
Return
string Plugins URL link with optional paths appended.
More Information
This function retrieves the absolute URL to the plugins or mu-plugins directory (without the trailing slash) or, when using the $path argument, to a specific file under that directory. You can either specify the $path argument as a hardcoded path relative to the plugins or mu-plugins directory, or conveniently pass __FILE__ as the second argument to make the $path relative to the parent directory of the current PHP script file.
Uses the WP_PLUGIN_URL or, in the case the $plugin path begins with the WPMU_PLUGIN_DIR path, the WPMU_PLUGIN_URL constant internally, to compose the resultant URL. Note that the direct usage of WordPress internal constants is not recommended.
Uses apply_filters() to apply “plugins_url” filters on the resultant URL, with the following line of code
return apply_filters( 'plugins_url', $url, $path, $plugin );
The plugins_url() function should not be called in the global context of plugins, but rather in a hook like “init” or “admin_init” to ensure that the “plugins_url” filters are already hooked at the time the function is called. This is vital for many site configurations to work, and if plugins_url() is called in the global context of a plugin file it cannot be filtered by other plugins (though mu-plugins are able to filter it because they run before any other plugins).
Source
File: wp-includes/link-template.php
.
View all references
function plugins_url( $path = '', $plugin = '' ) {
$path = wp_normalize_path( $path );
$plugin = wp_normalize_path( $plugin );
$mu_plugin_dir = wp_normalize_path( WPMU_PLUGIN_DIR );
if ( ! empty( $plugin ) && str_starts_with( $plugin, $mu_plugin_dir ) ) {
$url = WPMU_PLUGIN_URL;
} else {
$url = WP_PLUGIN_URL;
}
$url = set_url_scheme( $url );
if ( ! empty( $plugin ) && is_string( $plugin ) ) {
$folder = dirname( plugin_basename( $plugin ) );
if ( '.' !== $folder ) {
$url .= '/' . ltrim( $folder, '/' );
}
}
if ( $path && is_string( $path ) ) {
$url .= '/' . ltrim( $path, '/' );
}
/**
* Filters the URL to the plugins directory.
*
* @since 2.8.0
*
* @param string $url The complete URL to the plugins directory including scheme and path.
* @param string $path Path relative to the URL to the plugins directory. Blank string
* if no path is specified.
* @param string $plugin The plugin file path to be relative to. Blank string if no plugin
* is specified.
*/
return apply_filters( 'plugins_url', $url, $path, $plugin );
}
Hooks
-
apply_filters( 'plugins_url',
string $url ,string $path ,string $plugin ) -
Filters the URL to the plugins directory.
Changelog
Version | Description |
---|---|
2.6.0 | Introduced. |
User Contributed Notes
You must log in before being able to contribute a note or feedback.
Common Usage
The
plugins_url()
function is commonly used in a plugin file. Passing the__FILE__
PHP magic constant in the place of the$plugin
parameter makes the$path
relative to the parent directory of that file:The above might output this HTML markup:
<img src="http://www.example.com/wp-content/plugins/my-plugin/images/wordpress.png">
.If you are using the
plugins_url()
function in a file that is nested inside a subdirectory of your plugin directory, you should use PHP’sdirname()
function:The above might output this HTML markup:
<img src="http://www.example.com/wp-content/plugins/images/wordpress.png">
.Default Usage
The
$plugins_url
variable will equal to the absolute URL to theplugins
ormu-plugins
directory, e.g. “http://www.example.com/wp-content/plugins”.