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 경로를 사용한 것입니다.
스탠다드를 사용하는ajaxurl
wordpress에서 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
'programing' 카테고리의 다른 글
각 도커 이미지에 JDK를 포함해야 합니까? (0) | 2023.03.02 |
---|---|
워드프레스 - term_에서 용어 이름을 가져오는 방법아이디? (0) | 2023.03.02 |
Wordpress에서 페이지 제목을 가져오는 방법 (0) | 2023.03.02 |
메이븐 + 스프링 부트:org.json이 여러 개 발견되었습니다.클래스 경로의 JSONObject: (0) | 2023.03.02 |
세션 타임아웃 및 View ExpiredJSF/PrimeFaces ajax 요청에 대한 예외 처리 (0) | 2023.03.02 |