WordPressでajaxを使用するときに注意すること

WordPress

ログイン時とログアウト時で登録するフックが異なる

add_action( 'wp_ajax_xxxxx', 'get_xxxxx' ); // ログイン時
add_action( 'wp_ajax_nopriv_xxxxx', 'get_xxxxx' ); // ログアウト時
function get_xxxxx(){

}

ログインしていなくても使用したい場合は「wp_ajax_nopriv~」のほうも設定してください。

謎の0が表示される

WordPressでajaxを使用したときに

正常に処理が通って、データ取ってきて表示できたぞ!と思ったら最後に「0」が表示される…

どこにも0を出力しているコードはないのに

admin-ajax.phpを直接表示すると0が出てくるのでどうやらこの値が表示されているようです。

最終行にこんな記載が…

// Default status.
wp_die( '0' );

さてどうやって表示しないようにするのか…

修正前のコード

add_action( 'wp_ajax_xxxxx', 'get_xxxxx' );
add_action( 'wp_ajax_nopriv_xxxxx', 'get_xxxxx' );

function get_xxxxx(){
  //処理
  return;
}

修正後のコード

add_action( 'wp_ajax_xxxxx', 'get_xxxxx' );
add_action( 'wp_ajax_nopriv_xxxxx', 'get_xxxxx' );

function get_xxxxx(){
  //処理
  die();
}

dieで終了させることで対応しました。

関連記事