同样,正如我在评论中所说的,我不知道你能百分之百确定地满足所有条件。以下是我认为在WordPress中工作时,您可以获得的最接近的信息。
使用MU插件写回电话是一种即使不是不可能也很难删除的方式首先,使用必须使用的插件。在中创建目录wp-content
调用mu-plugins
. 该位置中的文件会自动加载,除非删除它们,否则无法禁用,因此您的用户需要某种服务器访问权限--(s)FTP或shell访问权限。这给了你更多的控制。
其次,WordPress提供了一种从挂钩中删除回调的机制,但您需要知道回调的名称。你可以利用这一事实,至少让它更难移除。
为此,可以使用匿名类,如下所示:
class Hard_To_Remove {
function __construct() {
add_action(\'wp_footer\',array($this,\'print_to_footer\'));
}
function print_to_footer() {
echo \'Hello, I am a footer message\';
}
}
new Hard_To_Remove();
它不容易删除,因为没有简单的方法来引用回调,而按如下方式编写它可以删除。
class Hard_To_Remove {
function __construct() {
add_action(\'wp_footer\',array($this,\'print_to_footer\'));
}
function print_to_footer() {
echo \'Hello, I am a footer message\';
}
}
$htr = new Hard_To_Remove();
remove_action(\'wp_footer\',array($htr,\'print_to_footer\'));
闭包也会造成同样的困难。您无法轻松引用回调来删除它。
add_action(
\'wp_footer\',
function() {
echo \'Hello, I am a footer message\';
}
);
但是,您可以通过检查
global
变量
$wp_filter
.
add_action(
\'wp_footer\',
function() {
global $wp_filter;
var_dump($wp_filter[\'wp_footer\']);
}
);
这可能有点笨拙,但应该可以删除这些过滤器。
主题总是有可能省略wp_footer()
但这应该相当罕见。
您可以使用shutdown
钩子,应该始终运行,但它会在结束时打印您的内容</html>
标签