WordPressで開始日と終了日の期間を指定して
期間内に該当する記事一覧を出力させたいのですが、
記事データの出力までに以下の手順を構想しております
【構想している処理の手順】
①カレンダー形式のUIから日付をクリックして検索期間の"開始日"と"終了日"を選択(送信データ用に成形) → 完成
②送信された期間のデータを「calender.php」に送りdate_queryのパラメーター用に再成型 → 完成
③date_queryのパラメーターをもとにコールバック用に出力記事データを戻り値に設定 → 未完成
④「calender.php」で返された出力記事データをコールバック処理のユーザー定義関数returnArchiveの引数に入れる → 未検証
処理としては③が未完成の項目となるのですが、
「calender.php」の処理内容はwordPressのテンプレートに直接記述した場合は動作するのですが、外部ファイルとして設定した場合に動作させることが可能なのか?
そもそも④として構想しているWP Query関数の記事データを非同期として扱えるのか?
という疑問と検証方法に当たるエントリーが見当たらず途方に暮れております。
【JavaScript「calender.js」の非同期処理】
var box = {}; // 配列の初期化 //動的に取得して"年"・"月"・"日"に分解され格納されています box['before'] = [2016,02,01]; //開始日2016年2月1日 box['after'] = [2016,02,14]; //終了日2016年2月14日 //配列をjson形式に成形 var send_data = JSON.stringify(box); //「calender.php」へ指定期間のデータを送信 $.getJSON('calender.php', {data : box}, returnArchive); //コールバックの処理(確認用) function returnArchive(result){ console.log(result); //記事一覧にコールバックデータを生成 $('#posts').append(result); }
【PHP「calender.php」の受信側処理】
//POST送信されたデータを受け取る $array_data = $_POST['data']; //ヘッダーの設定 header('Content-type:application/json; charset=utf8'); //$after(開始日)と$before(終了日)に代入 $after = array('year' => $data['before'][0], 'month' => $data['before'][1], 'day' => $data['before'][2]); $before = array('year' => $data['after'][0], 'month' => $data['after'][1], 'day' => $data['after'][2]); //date_queryに期間を指定 $args = get_posts( array( 'posts_per_page' => -1, 'date_query' => array( array( 'after' => array( 'year' => $after['year'], 'month' => $after['month'], 'day' => $after['day'], ), 'before' => array( 'year' => $before['year'], 'month' => $before['month'], 'day' => $before['day'], ), 'inclusive' => true, ), ), )); //期間に該当する記事のタイトル一覧を出力 if( !empty( $args ) ) { foreach( $args as $post ) { setup_postdata( $post ); echo '<h1>'. the_title(). '</h1>'; } } //データは返せてません。
現段階まで作成している処理は上記の通りです。
構想している処理が動作可能なコードのご教授。
もしくは同様な工程が行われている参考となるテーマなどをご存じの方、
何卒お力添えをお願い致します。
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。