1. TOP
  2. Web Wordpress
  3. [Wordpress] ワードプレス内でAjaxを使う

[Wordpress] ワードプレス内でAjaxを使う

カテゴリ:
Web
Wordpress
| トラックバック(0)
投稿者:yo yo

うん番煎じだって話だけど、コピペ用として書いているだけなので詳しくは公式リファレンスを見てください。

function.php

// ajax enqueue
add_action( 'wp_enqueue_scripts', 'ajax_enqueue' );

// ajax function
add_action( 'wp_ajax_' . 'ajax_action', 'ajax_js' );
add_action( 'wp_ajax_nopriv_' . 'ajax_action', 'ajax_js' );

/**
 * jsファイルを読み込む
 */
function ajax_enqueue() {
	$handle = 'ajax_handle';
	$action = $handle . '_action';
	
	// 読み込むスクリプトファイル(※依存関係:jquery)
	wp_enqueue_script( $handle, esc_url( get_template_directory_uri() ) . '/js/ajax.js', array( 'jquery' ) );
	wp_localize_script( $handle, $handle, array(
		'api' => admin_url( 'admin-ajax.php' ),
		'action' => $action,
		'nonce' => wp_create_nonce( $action )
	) );
}

/**
 * ajax action
 */
function ajax_js() {
	$handle = 'ajax_handle';
	$action = $handle . '_action';

	// NONCEチェック
	$nonce = isset( $_POST['nonce'] ) ? $_POST['nonce'] : '';
	if ( ! wp_verify_nonce( $nonce, $action ) ) {
		status_header( '403' );
		$data = 'Forbidden';
	}
	// クエリでデータを取り出す
	$query = new WP_Query();
	
	try {
			//JSON形式で出力する
			header('Content-Type: application/json');
			wp_send_json( $query );
			exit;
	}
	catch (PDOException $e){
			//例外処理
			die('Error:' . $e->getMessage());
	}
}

ajax.js

jQuery.ajax({
    type: 'POST',
    dataType:'json',
    url: ajax_handle.api,
    data:{
        nonce: ajax_handle.nonce,
        action: ajax_handle.action
    },
    success:function(data) {
    	console.log(data); // json data
    }
});

« [雑記] 規格を統一してくれ! | ホーム | [雑記] 住宅展示場で開催されるヒーローショー »

トラックバック

http://pulltab.info/mt/mt-tb.cgi/174
ページの先頭に戻る