实际上,没有理由不在admin上注册短代码。
如果插件作者想要禁用Ajax格式的插件,他们应该这样做
if (defined(\'DOING_AJAX\') && DOING_AJAX)
而不是检查is admin。
请注意,将来可能Shortcake 将嵌入core,因为它是一个“功能插件”。
如果发生这种情况,admin中未定义的短代码将无法使用。这让您再次确认,没有理由不在admin上注册短代码:即使核心开发人员也在开发需要admin上可用的短代码的东西。
也就是说,你必须具备以下可能性:
请与插件作者联系,看看他们是否可以修复该行为,试着自己找到一个解决方案,关于#2,实际存在的库可以强制is_admin
是真的。顺便说一句,它们是黑客的,我永远不会在生产中使用它们。
例如Patchwork.
使用它可以重写任何PHP自定义函数。
在a中MU plugin 您可以执行(完全未经测试):
add_action(\'muplugins_loaded\', function() {
if ( defined(\'DOING_AJAX\') && DOING_AJAX ) {
require \'path/to/Patchwork.php\';
Patchwork\\replace("is_admin", function() {
return FALSE;
});
}
});
这将使
is_admin()
对ajax请求返回false。
然而,正如前面所说的,这是非常黑客的,并且会影响其他插件(和核心)的行为,产生不可预测的影响。
您可以做的另一件事是在管理请求上注册插件短代码处理程序。
E、 g.如果插件代码为:
if (! is_admin()) {
add_shortcode( \'shortcode\' , \'plugin_shortcode_handler\' );
}
那么
you 可以编写另一个插件:
if (is_admin()) {
add_shortcode( \'shortcode\' , \'plugin_shortcode_handler\' );
}
这样,两种情况下都会添加短代码。
这可能单独起作用,也可能不起作用,这取决于其他插件代码,但对此没有一个通用的答案。