WordPress Version: 6.3
/**
* Checks the mu-plugins directory and retrieve all mu-plugin files with any plugin data.
*
* WordPress only includes mu-plugin files in the base mu-plugins directory (wp-content/mu-plugins).
*
* @since 3.0.0
* @return array[] Array of arrays of mu-plugin data, keyed by plugin file name. See get_plugin_data().
*/
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;
}