lkwdwrd/wp-muplugin-loader

WordPress 的内置 MU 插件加载器

安装次数: 46,608

依赖关系: 0

建议者: 0

安全: 0

星级: 58

关注者: 3

分支: 26

开放问题: 9

类型:composer-plugin

1.0.5 2018-04-20 22:09 UTC

This package is auto-updated.

Last update: 2024-09-19 10:55:01 UTC


README

Build Status

使用 Composer Installers 库来管理插件效果显著。然而,它对 MU 插件的处理还有待改进。

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

有手动解决方法,但我在运行安装时想避免任何手动步骤。没有额外的文件,只需运行 composer installcomposer update 即可。这就是 WP 必须使用插件加载器所做的事情。

使用说明

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

"require": {
	"composer/installers": "~1.2.0",
	"johnpbloch/wordpress": "*",
	"lkwdwrd/wp-muplugin-loader": "~1.0.0",
}

确保在 composer.jsonextras 中定义了你的 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 插件目录中的所有文件夹中找到所有插件,并将它们也包括在内。

强制 MU 插件

通常当你使用 MU 插件时,你有一些总是需要激活的“常规”WordPress 插件。它们不总是 MU 插件,所以将 "type": "wordpress-muplugin" 放入 composer.json 文件中是没有意义的。WP 必须使用插件加载器允许你根据需要将类型从 wordpress-plugin 强制更改为 wordpress-muplugin

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

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

"require": {
	"johnpbloch/wordpress": "*",
	"lkwdwrd/wp-muplugin-loader": "~1.0.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 文件夹,并与其他必须使用插件一起自动加载。

强制 Unix 目录分隔符

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

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