plugins_url() WordPress Function
The plugins_url() function is a Wordpress function that allows you to easily retrieve the URL of a plugin file. This function is especially useful when you need to enqueue a plugin script or stylesheet.
plugins_url( string $path = '', string $plugin = '' ) #
Retrieves a URL within the plugins or mu-plugins directory.
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 value: ''
- $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 value: ''
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
1 | 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
3529 3530 3531 3532 3533 3534 3535 3536 3537 3538 3539 3540 3541 3542 3543 3544 3545 3546 3547 3548 3549 3550 3551 3552 3553 3554 3555 3556 3557 3558 3559 3560 3561 3562 3563 3564 3565 3566 | 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 ) && 0 === strpos ( $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 ); } |
Expand full source codeCollapse full source codeView on TracView on GitHub
Changelog
Version | Description |
---|---|
2.6.0 | Introduced. |