get_plugins

Definition:
function get_plugins($plugin_folder = '') {}

Check the plugins directory and retrieve all plugin files with plugin data.
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 that do keep your plugin files in directories.

Parameters

  • string $plugin_folder: Optional. Relative path to single plugin folder.

Return values

returns:Key is the plugin file path and the value is an array of the plugin data.

Source code

function get_plugins($plugin_folder = '') {



	if ( ! $cache_plugins = wp_cache_get('plugins', '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;

}

1556

4 Responses to “get_plugins”

  1. Can I change plugin path in wordpress, any function.php code?

  2. Hello, I can’t find the “plugins” page from my dashboard, why might this be and where can I find it? has wordpress got rid of this function perhaps? thank you

    • On WordPress.com you cannot install plugins, so if you miss the page here, that’s totally fine and you might want to have a look at this page for the differences between WordPress.com and WordPress.org.

      If you’re running your own self-hosted WordPress.org blog you likely lack the permissions to install plugins and should contact your (WordPress)network administrator or make sure to login as administrator.

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out /  Change )

Facebook photo

You are commenting using your Facebook account. Log Out /  Change )

Connecting to %s

%d bloggers like this: