クライアント・サーバ間のAjaxを用いた非同期通信
jQuery(function ($) {
$.ajax({
type: ‘POST’,
url: wp_url_admin_ajax,
dataType: ‘text’,
timeout: 3000,
data: {
’action’: ‘tell_me’,
’category_name’: vCategory_Name,
},
success: function (response) {
json = eval(“(” + response + “)”);
if (json.err) {
result = “error:404”;
} else {
pArray = json;
}
}
});
});
・ admin_url(‘admin-ajax.php’)
WordPressでAjaxを使う場合、データを送る先のurlが決まっています
phpファイルの中で、JavaScrptの変数にファイルのパスを代入します
・ type: 通信に利用するHTTPメソッド
・ dataType: 受信データの種類 (デフォルトは自動推測)
・ timeout: タイムアウト時間 (初期値は 0 で時間無制限)
サーバからの返信が無い時、ローディングが延々と続く事態を回避します
・ url
「wp_url_admin_ajax」を指定します
・ data: 送信データ (「キー名: 値」のハッシュ形式)
クエリーパラメータを指定するには「data」オプションに設定します
function tell_me() {
//クエリに “paged” パラメーターを追加する事でWordPress は
//どのページを表示するか正確に知ることができる (ページネーションのエラー対策)
$paged = (get_query_var(‘paged’)) ? get_query_var(‘paged’) : 1;
$args = array(
’category_name’ => $_POST[‘category_name’],
’paged’ => $paged,
’post_type’ => array(
‘post’, // – 投稿。
),
);
// The Query
$the_query = new WP_Query( $args );
//変数の設定
$php_array = array();
$v_cnt = 0;
// The Loop
if ( $the_query->have_posts() ) {
while ( $the_query->have_posts() ) {
$the_query->the_post(); //次のループに進む
$cat = get_the_category();
$cat = $cat[0];
//配列に保存する
$php_array[‘cat_name’][$v_cnt] = $cat->name; //カテゴリ名
$php_array[‘title’][$v_cnt] = get_the_title(); //タイトル
$php_array[‘article_id’][$v_cnt] = get_the_ID(); //投稿ID
//リストではない場合は記事本文を取得する
if ($_POST[‘article_id’] != “”){
$php_array[‘content’][0] = get_the_content(); //投稿ID
}
$v_cnt += 1;
}
wp_reset_postdata(); //クエリをリセット
}
//phpからJavaScriptに変数の値を引き渡す
echo json_encode($php_array, JSON_UNESCAPED_UNICODE);
die();
}
・ add_action(‘○○○’, ‘tell_me’);;
ログイン状態・非ログインのユーザーからのアクセスで動作する
: DATA
: BLOG
: PRAVACY POLICY
タイトルへ
サウンド設定
スクリーン設定