我有Ajax设置,我正在尝试切换一个函数,以避免加载到wp\\U头中。它适用于第一个切换函数,但第二个函数不注册。
function av_maintenance_mode_turn_on() {
if( !wp_verify_nonce( $_GET[\'nonce\'], \'av-maintenance-mode-nonce\' ))
die( \'Go away!\');
if( add_action( \'get_header\', \'av_maintenance_mode_active\' ) ) {
echo \'maintenance_mode_on\';
}
die();
}
add_action( \'wp_ajax_toggle_av_maintenance_on\', \'av_maintenance_mode_turn_on\' );
此功能正常工作。可以看到响应。
function av_maintenance_mode_turn_off() {
if( !wp_verify_nonce( $_GET[\'nonce\'], \'av-maintenance-mode-nonce\' ))
die( \'Go away!\');
if( remove_action( \'get_header\', \'av_maintenance_mode_active\' ) ) {
echo \'maintenance_mode_off\';
}
die();
}
add_action( \'wp_ajax_toggle_av_maintenance_off\', \'av_maintenance_mode_turn_off\' );
这里没有回应。我可以在if语句和响应出现之前回显一些内容,因此这可能是因为
remove_action
不工作。
以下是我的JavaScript:
jQuery(document).ready( function($) {
var widget_inside = $(\'#av_maintenance_mode_widget .inside\');
var toggle_on = {
action: \'toggle_av_maintenance_on\',
nonce: av_maintenance_mode_vars.nonce
};
var toggle_off = {
action: \'toggle_av_maintenance_off\',
nonce: av_maintenance_mode_vars.nonce
};
$(\'#av_maintenance_mode\').toggle(
function() {
$.get( av_maintenance_mode_vars.ajaxurl, toggle_on, function(response) {
if( response == \'maintenance_mode_on\' ) {
$(widget_inside).addClass(\'maintenance_mode_on\');
}
});
},
function() {
$.get( av_maintenance_mode_vars.ajaxurl, toggle_off, function(response) {
if( response == \'maintenance_mode_off\' ) {
$(widget_inside).removeClass(\'maintenance_mode_on\');
}
});
}
);
});
EDIT
我尝试了使用“wp\\u head”作为标记,以及添加/删除过滤器而不是操作,但我仍然没有从标题中删除该函数。