是否可以对wp_ajax_action应用_Filter?

时间:2019-09-08 作者:Santoro

我正在用一个插件扩展其他人的插件,并用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;
}
}

1 个回复
最合适的回答,由SO网友:Jacob Peattie 整理而成

问题是:是否可以挂接apply\\u filters或在其函数上添加\\u filters,操纵它并将HTML添加到该页面?

apply_filtersadd_filter() 做两件不同的事。apply_filters 允许通过过滤值add_filter(). 这意味着如果原始代码是第三方代码,则只能使用add_filter() 如果该代码已经apply_filters() 应用于它。如果您正在扩展另一个插件,您将使用add_filter(), apply_filters().

所以你需要检查一下checkAddons 通过查看函数是否使用apply_filters() 在任何地方如果有,则可以使用过滤传递给它的值add_filter(). 如果过滤器得到了适当的支持,那么理想的情况是,原始开发人员已经在某个地方对其进行了记录。

相关推荐

为内置钩子调用do_action和Apply_Filters是否安全?

我正在开发一个插件,它需要复制一些内置的WordPress逻辑。(此逻辑不能用任何内置方法调用,也不能独立连接到。)在这个动作序列中,WordPress的正常行为是调用动作挂钩(do_action(\'wp_login\', ...)) 和过滤器挂钩(apply_filters(\'login_redirect\', ...)).如果在对应于在Core中调用它们的时间点调用它们,那么直接从我的插件调用这些内置钩子是否安全(并且是可以接受的做法)?或者,其他与此相关的开发人员期望在非常特定的时间执行操作的风