想发布到options.php并用Ajax调用自定义函数,我做错了什么?

时间:2018-01-25 06:42:09

标签: php jquery ajax wordpress

现在当我更新我的插件页面时,除了调用我的动作钩子,测试处理程序之外,设置保存并执行我想要的操作。总的来说,ajax请求似乎正在工作并将我的选项添加到数据库但不调用我的测试处理函数。是否可以发布到options.php并调用自定义函数来执行更多操作?

这是我的jQuery代码,它将表单数据提交给WordPress options.php

    jQuery(document).ready(function($) {

    $('#yacht-form').on( 'submit', function(event) {

        console.log($("input#submit").attr("disabled","disabled"));

        var ylocations = $('#ylocations').val();

        if (ylocations == 0) {
            $('.button-save').html('<p>Error! Empty Value.</p>').show().fadeIn();
            $('.button-save').addClass('button-error');
            $('.button-save').delay(5000).fadeOut();
            $("input#submit").removeAttr("disabled");
            return false;
        }

        var settings =  $(this).serialize();
        console.log(settings);
        // submit the data


        $.post( 'options.php', settings, { action: 'test_handler'} ).error( 
                function() {
                    alert('error');
                }).success( function() {

                    $('.button-save').html('<p>Changes Saved!</p>').show().fadeIn();
                    $('.button-save').delay(3000).fadeOut();


                });
                $("input#submit").removeAttr("disabled");
                return false;

    });

});

以下是我称之为操作的代码

function test_handler() {
    $post_arr = array(
        'post_title'   => 'Test post',
        'post_content' => 'Test post content',
        'post_status'  => 'publish',
        'post_author'  => get_current_user_id(),
        'tax_input'    => array(
            'hierarchical_tax'     => $hierarchical_tax,
            'non_hierarchical_tax' => $non_hierarchical_tax,
        ),
        'meta_input'   => array(
            'test_meta_key' => 'value of test_meta_key',
        ),
    );
    wp_insert_post($post_arr);

    wp_die();
}
add_action( 'wp_ajax_test_handler', 'test_handler' );

0 个答案:

没有答案