JQuery上的添加/删除操作切换

时间:2012-12-20 作者:AlxVallejo

我有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”作为标记,以及添加/删除过滤器而不是操作,但我仍然没有从标题中删除该函数。

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

我最终没有添加/删除该操作,而是将一个选项写入数据库,并在设置该选项后进行第二次插件检查:

function av_maintenance_mode_check() {
    if( !wp_verify_nonce( $_GET[\'nonce\'], \'av-maintenance-mode-nonce\' ))
    die( \'Go away!\');
    if( get_option( \'av_maintenance_mode\' ) == \'on\' ) {
        echo \'<span style="color:green">On</span>\';
    }else{
        echo \'<span style="color:red">Off</span>\';
    }
    die();
}
add_action( \'wp_ajax_toggle_av_maintenance_check\', \'av_maintenance_mode_check\' );

结束

相关推荐

AJAX和WP_QUERY/TAX_QUERY参数

在做了一些广泛的研究之后,我用尽了所有的选择,决定在这里提出一个问题。我试图使用WP\\u Query和tax\\u Query参数通过AJAX获得一组经过过滤的帖子。我目前有一个自定义的帖子类型叫做“词汇术语”,还有两个自定义的分类法叫做“词汇类别”和“难度级别”。从本质上说,我希望用户做的是选择一个类别,然后选择一个难度级别,然后加载任何标记了每个类别的帖子。下面是我的php函数和js。似乎我可以通过词汇术语进行筛选,但第二次尝试将任何内容传递到tax\\u查询时,它失败了。有什么想法吗?ajax游戏