programing

ajax를 사용하여 wordpress 설정 api 옵션을 저장하는 중,

i4 2023. 3. 2. 21:59
반응형

ajax를 사용하여 wordpress 설정 api 옵션을 저장하는 중,

나는 이 문제와 꽤 오랫동안 씨름하고 있다.테마 옵션 페이지가 있고 단일 옵션이 등록되어 있습니다.

저는 사용자가 저장 버튼을 누를 때마다 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입니다.여기 없는 게 뭔지 잘 모르겠어요.몇 가지 변형을 시도했지만 효과가 없는 것 같아요.

설정 API를 사용할 때 Ajax를 통해 설정을 저장하는 방법을 찾았습니다.

제 코드에서 가장 큰 실수는 잘못된 URL 경로를 사용한 것입니다.

스탠다드를 사용하는ajaxurlwordpress에서 ajax 호출을 할 때 주로 사용하는 것입니다.설정 api 형식의 액션 호출을 사용합니다.options.php.

이 URL 경로를 사용하기 때문에 php 함수가 옵션으로 요청을 처리할 필요가 없습니다.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 끝에 추가합니다.

걱정해야 할 부분인지, 문제는 발생하지 않았지만, 장기적으로는 검토할 수 있을 것 같습니다.

작업 값 변경 시도:wp_ajax_main_options_save로.main_options_save. 워드프레스는 접두사를 추가합니다.wp_ajax_동작값으로 자동 변환됩니다.wp_ajax_{your_posted_action}.

베스트 프랙티스에 대해서는, 여기를 참조해 주세요.

언급URL : https://stackoverflow.com/questions/10873537/saving-wordpress-settings-api-options-with-ajax

반응형