지금 WP 수작업 문서를 몇 시간 동안 보았지만 아직도 을 찾을 수 없습니다. 플러그인을 작성 중이며 페이지를 새로 고치지 않고도 옵션을 업데이트 할 수 있습니다. 나는 그것을 wp-load를 통해 을 달성 할 수 있었지만, 나쁜 습관을 알고 그것을 바르게하고 싶습니다.WordPress WP_ajax가 작동하지 않습니다.
일단 내가 모든 것을 가지고 있으면 자바 스크립트를 별도의 .js 파일로 이동합니다. 작동 중입니다.
모든 코드는 단일 페이지에 있습니다. ajax 을 통해 일부 옵션을 업데이트하려고하는데 작동하지 않습니다. 응답이 성공했지만 현재current_form 옵션이 업데이트되지 않고 있습니다. 어떤 도움이라도 대단히 감사하겠습니다.
코드가 지금에 업데이트됩니다
wp_enqueue_script('AWNT_save_form_data', plugin_dir_url(__FILE__) . 'includes/save_form_data.js', array('jquery'));
wp_localize_script('AWNT_save_form_data', 'MyAjax', array(
// URL to wp-admin/admin-ajax.php to process the request
'ajaxurl' => admin_url('admin-ajax.php'),
// generate a nonce with a unique ID "myajax-post-comment-nonce"
// so that you can check it later when an AJAX request is sent
'postCommentNonce' => wp_create_nonce('myajax-post-comment-nonce'),
)
);
add_action('wp_ajax_AWNT_save', 'AWNT_save_callback');
function AWNT_save_callback() {
update_option('current_form', '5');
$nonce = $_POST['postCommentNonce'];
if (! wp_verify_nonce($nonce, 'myajax-post-comment-nonce'))
die ('Busted!');
update_option('current_form', 'foo');
echo get_option('current_form');
die();
}
JS 파일 (save_form_data.js) :
이jQuery(document).ready(function($) {
$('#save').click(function() {
var data = {
action: 'AWNT_save',
postCommentNonce : MyAjax.postCommentNonce,
form_name : $('#form_name').val(),
customC: $('#customC').is(":checked"),
no_throttle: $('#no_throttle').is(":checked"),
form_code : $('#form_code').val()};
jQuery.post(MyAjax.ajaxurl, data, function(response) {
alert('Response: ' + response);
});
});
});
스크립트가 추가되고 , 0의 응답에 대한 경고를 표시하지만, update_option 중 전화를받지 않았거나 작동하지 않습니다. current_form은 동일하게 유지됩니다.
감사합니다. 그래도 여전히 작동하지 않는 것 같습니다. 업데이트 된 원래 질문. –
죄송합니다 답변에 오타가 있습니다. add_action ('wp_ajax_nopriv)을 찾아서 문제가 해결되었는지 확인하십시오. – chifliiiii
나는 그것을 보았습니다. 관리자 권한이있는 사용자 만 사용할 수있는 플러그인 옵션 페이지가 있어야한다고 생각하지 마십시오. 방금 시도했지만 아직 아무것도하지 않았습니다. 스크립트가 제대로 실행되고 있지만 모든 값이 정확하며 응답이 성공적으로 유지됩니다. 그러나 콜백에서 update_option 라인으로 옵션을 업데이트하지는 않습니다. –