函数文档

get_mu_plugins()

💡 云策文档标注

概述

get_mu_plugins() 函数用于扫描 mu-plugins 目录,检索所有 mu-plugin 文件及其插件数据。它返回一个以插件文件名作为键的数组,每个元素包含插件数据。

关键要点

  • 函数检查 WPMU_PLUGIN_DIR 目录(通常为 wp-content/mu-plugins),仅处理 .php 文件。
  • 使用 get_plugin_data() 解析插件元数据,但禁用标记和翻译以避免缓存问题。
  • 如果插件数据中缺少 'Name' 字段,则使用文件名作为默认值。
  • 返回数组结构:键为插件文件名,值为插件数据数组。

注意事项

  • 如果 mu-plugins 目录不存在或不可读,函数返回空数组。
  • 函数从 WordPress 3.0.0 版本引入。

📄 原文内容

Checks the mu-plugins directory and retrieve all mu-plugin files with any plugin data.

Description

WordPress only includes mu-plugin files in the base mu-plugins directory (wp-content/mu-plugins).

Return

array[] Array of arrays of mu-plugin data, keyed by plugin file name. See get_plugin_data() .

Source

function get_mu_plugins() {
	$wp_plugins   = array();
	$plugin_files = array();

	if ( ! is_dir( WPMU_PLUGIN_DIR ) ) {
		return $wp_plugins;
	}

	// Files in wp-content/mu-plugins directory.
	$plugins_dir = @opendir( WPMU_PLUGIN_DIR );
	if ( $plugins_dir ) {
		while ( ( $file = readdir( $plugins_dir ) ) !== false ) {
			if ( str_ends_with( $file, '.php' ) ) {
				$plugin_files[] = $file;
			}
		}
	} else {
		return $wp_plugins;
	}

	closedir( $plugins_dir );

	if ( empty( $plugin_files ) ) {
		return $wp_plugins;
	}

	foreach ( $plugin_files as $plugin_file ) {
		if ( ! is_readable( WPMU_PLUGIN_DIR . "/$plugin_file" ) ) {
			continue;
		}

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

		if ( empty( $plugin_data['Name'] ) ) {
			$plugin_data['Name'] = $plugin_file;
		}

		$wp_plugins[ $plugin_file ] = $plugin_data;
	}

	if ( isset( $wp_plugins['index.php'] ) && filesize( WPMU_PLUGIN_DIR . '/index.php' ) <= 30 ) {
		// Silence is golden.
		unset( $wp_plugins['index.php'] );
	}

	uasort( $wp_plugins, '_sort_uname_callback' );

	return $wp_plugins;
}

Changelog

Version Description
3.0.0 Introduced.