我正在用一个插件扩展其他人的插件,并用apply\\u过滤器在他们的“插件”页面上注册它。。。。(如有可能)
他们的插件与插件页面admin上的Ajax调用配合使用,因此当我单击“AddOn”页面时,它会发出一个名为“wp\\u Ajax\\u checkAddons”的Ajax调用,该调用执行一个函数(不带参数)并生成页面HTML。
问题是:是否可以挂接apply\\u filters或在其函数上添加\\u filters,操纵它并将HTML添加到该页面?
Exmaple代码:
ajax调用:
$.ajax({
type: \'POST\',
url: \'admin-ajax.php\',
data: \'action=checkAddons\',
success: function (response) {
$(\'.box\').html(response);
}
});
行动:
add_action(\'wp_ajax_checkAddons\', array(&$this, \'checkAddons\'));
回调:
function checkAddons() {
$result = theClass::theFunction();
die($result);
}
功能:
class theClass{
public static function theFunction(){
//code
return $code;
}
}
最合适的回答,由SO网友:Jacob Peattie 整理而成
问题是:是否可以挂接apply\\u filters或在其函数上添加\\u filters,操纵它并将HTML添加到该页面?
apply_filters
和add_filter()
做两件不同的事。apply_filters
允许通过过滤值add_filter()
. 这意味着如果原始代码是第三方代码,则只能使用add_filter()
如果该代码已经apply_filters()
应用于它。如果您正在扩展另一个插件,您将使用add_filter()
, 非apply_filters()
.
所以你需要检查一下checkAddons
通过查看函数是否使用apply_filters()
在任何地方如果有,则可以使用过滤传递给它的值add_filter()
. 如果过滤器得到了适当的支持,那么理想的情况是,原始开发人员已经在某个地方对其进行了记录。