get_plugins( string $plugin_folder = '' )
Check the plugins directory and retrieve all plugin files with plugin data.
Description Description
WordPress only supports plugin files in the base plugins directory (wp-content/plugins) and in one directory above the plugins directory (wp-content/plugins/my-plugin). The file it looks for has the plugin data and must be found in those two locations. It is recommended to keep your plugin files in their own directories.
The file with the plugin data is the file that will be included and therefore needs to have the main execution for the plugin. This does not mean everything must be contained in the file and it is recommended that the file be split for maintainability. Keep everything in one file for extreme optimization purposes.
Parameters Parameters
- $plugin_folder
-
(string) (Optional) Relative path to single plugin folder.
Default value: ''
Return Return
(array) Key is the plugin file path and the value is an array of the plugin data.
Source Source
File: wp-admin/includes/plugin.php
271 272 273 274 275 276 277 278 279 280 281 282 283 284 285 286 287 288 289 290 291 292 293 294 295 296 297 298 299 300 301 302 303 304 305 306 307 308 309 310 311 312 313 314 315 316 317 318 319 320 321 322 323 324 325 326 327 328 329 330 331 332 333 334 335 336 337 338 339 340 341 342 | function get_plugins( $plugin_folder = '' ) { $cache_plugins = wp_cache_get( 'plugins' , 'plugins' ); if ( ! $cache_plugins ) { $cache_plugins = array (); } if ( isset( $cache_plugins [ $plugin_folder ] ) ) { return $cache_plugins [ $plugin_folder ]; } $wp_plugins = array (); $plugin_root = WP_PLUGIN_DIR; if ( ! empty ( $plugin_folder ) ) { $plugin_root .= $plugin_folder ; } // Files in wp-content/plugins directory $plugins_dir = @ opendir( $plugin_root ); $plugin_files = array (); if ( $plugins_dir ) { while ( ( $file = readdir( $plugins_dir ) ) !== false ) { if ( substr ( $file , 0, 1 ) == '.' ) { continue ; } if ( is_dir ( $plugin_root . '/' . $file ) ) { $plugins_subdir = @ opendir( $plugin_root . '/' . $file ); if ( $plugins_subdir ) { while ( ( $subfile = readdir( $plugins_subdir ) ) !== false ) { if ( substr ( $subfile , 0, 1 ) == '.' ) { continue ; } if ( substr ( $subfile , -4 ) == '.php' ) { $plugin_files [] = "$file/$subfile" ; } } closedir ( $plugins_subdir ); } } else { if ( substr ( $file , -4 ) == '.php' ) { $plugin_files [] = $file ; } } } closedir ( $plugins_dir ); } if ( empty ( $plugin_files ) ) { return $wp_plugins ; } foreach ( $plugin_files as $plugin_file ) { if ( ! is_readable ( "$plugin_root/$plugin_file" ) ) { continue ; } $plugin_data = get_plugin_data( "$plugin_root/$plugin_file" , false, false ); //Do not apply markup/translate as it'll be cached. if ( empty ( $plugin_data [ 'Name' ] ) ) { continue ; } $wp_plugins [ plugin_basename( $plugin_file ) ] = $plugin_data ; } uasort( $wp_plugins , '_sort_uname_callback' ); $cache_plugins [ $plugin_folder ] = $wp_plugins ; wp_cache_set( 'plugins' , $cache_plugins , 'plugins' ); return $wp_plugins ; } |
Expand full source code Collapse full source code View on Trac
Changelog Changelog
Version | Description |
---|---|
1.5.0 | Introduced. |
User Contributed Notes User Contributed Notes
You must log in before being able to contribute a note or feedback.
Get All Plugins
The following code snippet returns all plugins installed on your site (not just activated ones).
<?php
// Check if get_plugins() function exists. This is required on the front end of the
// site, since it is in a file that is normally only loaded in the admin.
if
( ! function_exists(
'get_plugins'
) ) {
require_once
ABSPATH .
'wp-admin/includes/plugin.php'
;
}
$all_plugins
= get_plugins();
// Save the data to the error log so you can see what the array format is like.
error_log
( print_r(
$all_plugins
, true ) );
Example output:
Array
(
[hello-dolly/hello.php] => Array
(
[Name] => Hello Dolly
[PluginURI] => https:
//wordpress.org/extend/plugins/hello-dolly/
[Version] => 1.6
[Description] => This is not just a plugin, it symbolizes the hope
and
enthusiasm of an entire generation summed up in two words sung most famously by Louis Armstrong: Hello, Dolly. When activated you will randomly see a lyric from <cite>Hello, Dolly</cite> in the upper right of your admin screen on every page.
[Author] => Matt Mullenweg
[AuthorURI] => http:
//ma.tt/
[TextDomain] =>
[DomainPath] =>
[Network] =>
[Title] => Hello Dolly
[AuthorName] => Matt Mullenweg
)
Expand full source codeCollapse full source code
Results are cached on the first run of the function, therefore it is recommended to call the function at least after the ‘after_setup_theme’ action so that plugins and themes have the ability to filter the results.