节能与阿贾克斯的WordPress设置API选项,(Saving wordpress setting

2019-07-29 17:12发布

我一直在摔跤这个问题相当长的一段时间。 我有一个选项页面的主题,一个选项注册。

我一直在试图获得通过AJAX的每一个用户按下保存按钮时更新的选项,这里是我的代码。

JS:

       function save_main_options_ajax() {

        $('.main-options-form').submit( function () { 

            var b       =  $(this).serialize(),
                optdata =  { action : "wp_ajax_main_options_save", data: b };

            $.post( ajaxurl, b, function (response) {
                if (response == 1 ) { alert('sucess'); }
                else { alert(optdata);}
            });
            return false;               
        });
    }
save_main_options_ajax();

PHP的:

 function main_options_save_ajax() { 

        check_ajax_referer('_wpnonce', '_wpnonce' );

        $data = $_POST;
        unset($data['option_page'], $data['action'], $data['_wpnonce'], $data['_wp_http_referer']);


        if ( update_option('main_options', $data ) )
        { die(1); }
        else { die (0); }           
}
add_action('wp_ajax_main_options_save', 'main_options_save_ajax' );

我在Firebug中看到的响应是0林不知道我在这里失踪,我已经试过这有一些变化,但似乎没有任何工作。

Answer 1:

发现了一种使用设置API时,通过AJAX保存设置。

我在我的代码所做的主要错误是,我使用了错误的URL路径。

而不是使用标准ajaxurl这就是你通常会使用使得在WordPress的Ajax调用时; 我们使用您的设置API的形式,这是该行动呼吁options.php

由于我们使用这个URL路径,也没有必要的PHP功能options.php处理这一切为我们处理该请求。

因此,我们只需要处理JS函数看起来像这样在我的实例。

 function save_main_options_ajax() {
           $('.main-options-form').submit( function () {
                var b =  $(this).serialize();
                $.post( 'options.php', b ).error( 
                    function() {
                        alert('error');
                    }).success( function() {
                        alert('success');   
                    });
                    return false;    
                });
            }
 save_main_options_ajax();

这就是它,拯救我得到了成功的警报后,并救了我的选择。

注意:只有一个,我注意到特点。 完成后POST请求,并显示成功警报,页面使得GET的页面版本的选项页中的具有参数要求&settings-updated=true添加到URL的末尾。

我不知道这是什么可担心的,我还没有遇到任何问题,但它可能是一些从长远看来考虑。



Answer 2:

尝试从变化的行动值wp_ajax_main_options_savemain_options_save 。 WordPress的添加前缀wp_ajax_自动到你的动作值一样wp_ajax_{your_posted_action}

阅读5个极好的提示这里额外的最佳实践。



文章来源: Saving wordpress settings api options with ajax,