1. 首页
  2. WordPress 函数手册

get_plugins()

get_plugins( string $plugin_folder =  )

检查plugins目录并检索包含插件数据的所有插件文件。
Check the plugins directory and retrieve all plugin files with plugin data.

目录锚点:#说明#参数#返回#源码#笔记


说明(Description)

WordPress只支持基本插件目录(wp content/plugins)和插件目录(wp content/plugins/my plugin)上面的一个目录中的插件文件。它查找的文件包含插件数据,必须在这两个位置找到。建议将插件文件保存在它们自己的目录中。

包含插件数据的文件是将包含的文件,因此需要对插件进行主执行。这并不意味着所有内容都必须包含在文件中,建议将文件拆分以便于维护。将所有内容保存在一个文件中,以达到极端优化的目的。


参数(Parameters)

参数 类型 必填 说明
$plugin_folder (string) 可选 单个插件文件夹的相对路径。

返回(Return)

(array[])插件数据数组,由插件文件名键入。请参阅get_plugin_data(array[])


源码(Source)

/**
 * 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 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.
 *
 * @since 1.5.0
 *
 * @param string $plugin_folder Optional. Relative path to single plugin folder.
 * @return array Key is the plugin file path and the value is an array of the plugin data.
 */
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;
}
更新版本 源码位置 使用 被使用
1.5.0 wp-admin/includes/plugin.php:278 15 4

笔记(Notes)

获取所有插件
结果在函数第一次运行时缓存,因此建议至少在“after_setup_theme”操作之后调用该函数,以便插件和主题能够筛选结果。

get_plugins() 为WP2原创文章,链接:https://www.wp2.cn/functions/get_plugins/

发表评论

您的电子邮箱地址不会被公开。