有一个插件正在加载ajax操作,如下所示:
add_action( \'wp_ajax_nopriv_func_name\', array( &$this, \'func_name\' ) );
add_action( \'wp_ajax_get_func_name\', array( &$this, \'func_name\' ) );
我想在我的主题中删除它们,因此我正在做:
remove_all_actions(\'wp_ajax_nopriv_func_name\');
remove_all_actions(\'wp_ajax_get_func_name\');
但它们仍然存在。我肯定是在添加了它们之后才这样做的。我将$wp\\u filter引入到范围中,并看到它们肯定是在我的代码之前设置的,之后未设置。
当您添加ajax操作时,看起来就像wordpress一样,工作方式略有不同。我认为实际操作存储在其他地方,我只是删除了它的别名,就像我在$wp\\u filter数组中查看函数名时一样4823746378642374682746func_name
.
我不确定它引用的位置或删除它的步骤。
有人能帮我解释一下吗?
编辑:
我认为这些数字是因为类对象正在被传递,我猜这是类的散列。
更新时间:
这似乎是一个错误/不一致。我做了以下测试:
add_action(\'wp_ajax_nopriv_ajax_test\', array(&$this, \'ajax_test\'));
add_action(\'wp_ajax_ajax_test\', array(&$this, \'ajax_test\'));
remove_all_actions(\'wp_ajax_nopriv_ajax_test\');
remove_all_actions(\'wp_ajax_ajax_test\');
the
ajax_test
函数仍然可以从javascript访问,即使它在添加后立即被删除。
有人知道这些东西存放在哪里吗?
更新时间:
我在admin ajax中找到了负责的代码。php
do_action( \'wp_ajax_\' . $_REQUEST[\'action\'] );
我无法理解的一件非常奇怪的事情是,ajax请求在命中此代码之前返回。因此,这段代码似乎只是用于执行相关操作,而不是返回ajax请求。