acato-plugins/wp-muplugin-loader

WordPress 的内置 MU 插件加载器

安装量: 6,150

依赖者: 0

建议者: 0

安全性: 0

星标: 0

关注者: 0

分支: 26

类型:composer-plugin

1.7.1 2023-05-16 06:01 UTC

README

归属

  • 此包是从 WP Must-Use Plugin Loader 分支出来的,而后者又从 WP Must-Use Plugin Loader 分支出来的。我们进行分支是为了添加对 force-mu 依赖的支持。我们很高兴将这个贡献回这个包,但由于我们的使用是一个边缘情况,所以我们没有发起 pull request。

概述

使用 Composer Installers 库来管理插件非常出色。然而,它对 MU 插件的处理还有待改进。

WordPress MU (必须使用) 插件是放置在 wp-content/mu-plugins/ 文件夹中的文件。这些文件会自动加载。问题是当插件实际上在一个文件夹内时。WordPress 只会加载 .php 文件,不会进入任何目录。当 Composer Installers 插件运行时,它总是将仓库放入一个很好的封装文件夹中。这意味着 Composer Installers 的 MU 插件永远不会真正运行!

有手动解决方法,但这需要手动步骤。我想在运行安装时摆脱任何手动步骤。没有额外的文件,只需运行 composer installcomposer update 即可。这就是 WP Must-Use Plugin Loader 所做的。

使用说明

在你的项目的 composer.json 文件中,需要此包。

"require": {
	"composer/installers": "~1.2.0",
	"johnpbloch/wordpress": "*",
	"acato-plugins/wp-muplugin-loader": "~1.0",
}

确保在你的 composer.json 文件的 extras 中定义了你的 mu-plugins 路径。

"extra": {
	"installer-paths": {
		"app/wp-content/themes/{$name}": [
			"type:wordpress-theme"
		],
		"app/wp-content/plugins/{$name}": [
			"type:wordpress-plugin"
		],
		"app/wp-content/mu-plugins/{$name}": [
			"type:wordpress-muplugin"
		]
	},
	"wordpress-install-dir": "app/wp"
}

就是这样。

当 Composer 输出其自动加载文件时,一个名为 mu-require.php 的文件将放置在你的 mu-plugins 文件夹中。当 WordPress 将此文件作为 MU 插件加载时,它将在你的 MU 插件目录中的所有文件夹中找到所有插件,并将它们也包括在内。

更改生成的文件名

如果你需要控制生成的文件名,你可以在 composer.json 文件的 extra 部分中设置它。

"extra": {
	...
	"mu-require-file": "custom-mu-require-filename.php"
}

类似地,如果你希望完全关闭此文件的生成,你可以将其设置为 false。

"extra": {
	...
	"mu-require-file": false
}

强制 MU 插件

通常当你使用 MU 插件时,你有一些“正常”的 WordPress 插件,你希望它们始终处于活动状态。它们不一定是 MU 插件,因此将 "type": "wordpress-muplugin" 放入 composer.json 文件中是没有意义的。WP Must-Use Plugin Loader 允许你根据需要将类型从 wordpress-plugin 覆盖为 wordpress-muplugin

为此,在 composer.json 文件的 extra 部分中定义一个 "force-mu" 键。此键应包含要强制转换为必须使用状态的插件的 slugs 数组。

这与 WPackagist 兼容。当从 WPackagist 添加插件时,使用插件的正常 slug,而不是 wp-packagist 版本。

"require": {
	"johnpbloch/wordpress": "*",
	"acato-plugins/wp-muplugin-loader": "~1.0",
	"wpackagist-plugin/rest-api": "*"
},
"extra": {
	"force-mu": [
		"rest-api"
	],
	"installer-paths": {
		"app/wp-content/themes/{$name}": [
			"type:wordpress-theme"
		],
		"app/wp-content/plugins/{$name}": [
			"type:wordpress-plugin"
		],
		"app/wp-content/mu-plugins/{$name}": [
			"type:wordpress-muplugin"
		]
	},
	"wordpress-install-dir": "app/wp"
}

rest-api 插件安装时,它将不会放入常规插件文件夹中,而是被推送到 mu-plugins 文件夹,并与其他必须使用的插件一起自动加载。

从依赖包强制 MU 插件

就像从主 composer.json 强制 MU 插件一样,你也可以从依赖的 composer.json 强制它们。所有 force-mu 键都将合并为一个 MU 插件集合。

强制Unix目录分隔符

如果您在Windows上工作,但使用Linux虚拟机运行开发服务器,可能需要强制使用Unix目录分隔符以确保服务器可以找到mu加载器脚本。如果是这样,您可以在extra块中设置另一个配置

"extra": {
	"force-unix-separator": true
}

修改mu插件的src目录

您可能希望更改mu插件要加载的src目录。例如,在WordPress VIP项目中,您可能希望使用此加载器从client-mu-plugins加载mu插件。为此,您可以设置一个常量来告知mu插件加载器您的mu插件存储位置

define('MU_PLUGIN_LOADER_SRC_DIR', WPCOM_VIP_CLIENT_MU_PLUGIN_DIR . '/');