StackExchange社区,
我正在研究一些块编辑器格式和块,并想添加一个检查,看看是否安装了某个插件。这将特定于WordPress的后端管理区域。例如:
if ( isPluginActive(\'plugin-name\') ) {
console.log(\'Plugin is active.\')
}
我知道我可以将PHP中的数据本地化到脚本中,但如果可以的话,最好使用任何内置函数或包。我确实遇到了
getPlugins()
方法,但这似乎是指gutenberg插件,而不是WordPress插件。
更新:我尝试使用apiFetch,并能够检索已安装插件的列表以及每个插件的状态。
const isPluginActive = () => {
apiFetch( { path: \'/wp/v2/plugins\' } ).then( ( plugins ) => {
plugins.forEach( ( plugin ) => {
const name = plugin.plugin
const status = plugin.status
if ( name === \'plugin-name/plugin-name\' && status === \'active\') {
return true
}
})
})
}
然而,我不确定如何使用它作为变量或函数返回布尔响应,我可以在条件语句中使用它。它当前返回未定义。
最合适的回答,由SO网友:bosco 整理而成
据我所知,古腾堡的任何数据存储都没有为此目的公开选择器。如果有的话,我会在core
. 如果古腾堡的体验扩展到插件管理屏幕,我想我们会看到这样的事情实现。
目前,如果相关用户activate_plugins
功能,您可以使用@wordpress/api-fetch
包装:
import apiFetch from \'@wordpress/api-fetch\';
// ...
const plugins = await apiFetch( { path: \'/wp/v2/plugins\' } );
请求生成的对象将具有
the fields described by the endpoint\'s schema, 包括主文件的相对路径、名称、版本号和活动/非活动状态。
可以修改核心REST端点的权限检查回调,以便向更多用户公开此功能,但这不是很直接,通常是不可取的。如果需要自定义端点或控制器的行为,那么创建新的端点或控制器可能是更好的解决方案。