現在、ajax を必要とするプラグインを開発中です。「正しく」行うことを考えていたので、admin-ajax.php を使用しようとしています。ただし、応答として常に 0 が返され、コールバックに到達しないような気がします。
これがコードです。シンプルにしようとしました。
js を読み込み、admin の外で admin-ajax.php を設定する
wp_enqueue_script('my-more-posts-ajax', SE_WP_MY_PLUGIN_URI . '/js/more-posts-ajax.js?' . rand(), array('jquery'));
wp_localize_script('my-more-posts-ajax', 'MyAjax', array('ajaxurl' => admin_url('admin-ajax.php')));
コールバックのアクション
add_action('wp_ajax_nopriv_my_more_posts', array($this, 'load_more_posts_callback'));
add_action('wp_ajax_my_more_posts', array($this, 'load_more_posts_callback'));
PHP コールバック関数
public function load_more_posts_callback() {
$response = json_encode(array('success' => TRUE));
header("Content-Type: application/json");
print $response;
exit;
}
js
jQuery(document).ready(function() {
jQuery('#my-show-more-form').submit(function(event) {
/* Prevent submitting normally */
event.preventDefault();
var data = {
action: 'my_more_posts',
offset: 8
};
jQuery.post(MyAjax.ajaxurl, data, function(response) {
alert('Response: ' + response);
});
});
});
誰が何が間違っているのか考えていますか? このためのすべてのコードを取得したと思います。