get_plugins

函数
get_plugins ( $plugin_folder = '' )
参数
  • (string) $plugin_folder Optional. Relative path to single plugin folder.
    Required:
    Default: (empty)
返回值
  • (array[]) Array of arrays of plugin data, keyed by plugin file name. See get_plugin_data().
定义位置
相关方法
get_mu_pluginsget_plugin_filesget_linksdelete_pluginswp_get_mu_plugins
引入
1.5.0
弃用
-

get_plugins函数用于检索所有已安装插件的数组。它返回一个数组,其中包含每个插件的信息,例如插件名称、版本号和插件文件路径。

检查插件目录并检索所有带有插件数据的插件文件。

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

有插件数据的文件是将被包含的文件,因此需要有该插件的主要执行。这并不意味着所有的东西都必须包含在这个文件中,为了便于维护,建议将文件分割。出于极端优化的目的,把所有东西都放在一个文件里。

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 ( '.php' === substr( $subfile, -4 ) ) {
							$plugin_files[] = "$file/$subfile";
						}
					}

					closedir( $plugins_subdir );
				}
			} else {
				if ( '.php' === substr( $file, -4 ) ) {
					$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;
		}

		// Do not apply markup/translate as it will be cached.
		$plugin_data = get_plugin_data( "$plugin_root/$plugin_file", false, false );

		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;
}

常见问题

FAQs
查看更多 >