singleページでの日時指定SQLの発行(Ajaxローディング・Javascript関係)
-
参考サイト:WordPress ページングはやめてAjaxローディングにする(http://hijiriworld.com/web/wp-ajax-loading/)
やりたい事
1.singleページにてバックナンバー(表示中の記事より過去の投稿のみ)の一覧表示
2.一覧の読み込みを5件ずつAjaxローディングで非同期にしたいうまくいかない事
SQL発行の際に、post_dateがうまく取得・比較できないコード
ほぼ参考サイトのままですが、header.php、single.php、more-disp.phpの3ファイルにまたがっています【header.php】(jQuery読み込みとJavascript)
<script type="text/javascript"> var now_post_num = 5; // 現在表示されている数 var get_post_num = 5; // 一度に取得する数 $(function() { $("#more_disp a").live("click", function() { $("#more_disp").html('<img class="ajax_loading" src="画像URL" />'); $.ajax({ type: 'post', url: 'more-disp.phpまでのURL', data: { 'now_post_num': now_post_num, 'get_post_num': get_post_num }, success: function(data) { now_post_num = now_post_num + get_post_num; $("#single-list").append(data); $("#more_disp").remove(); $("#single-list").append('<div id="more_disp"><a href="#">もっと表示</a></div>'); } }); return false; }); }); </script>【single.php】(デフォの5件を表示)
<section id="single-list"> <?php function my_posts_where( $where = '' ) { global $post; $where .= " AND post_date < '" . $post->post_date . "'"; return $where; } add_filter( 'posts_where', 'my_posts_where' ); // 表示中の記事より古いもの限定 $posts = get_posts( array( 'posts_per_page' => 5, // 表示件数を指定します。 'suppress_filters' => false, ) ); remove_filter( 'posts_where', 'my_posts_where' ); foreach ( $posts as $post ) { setup_postdata( $post ); ?> <article> <h2><a href="<?php the_permalink() ?>"><?php the_title(); ?></a></h2> </article> <?php } wp_reset_postdata(); ?> <div id="more_disp"><a href="#">もっと表示</a></div> </section>【more-disp.php】(SQLの発行)
<?php require_once("../../../wp-config.php"); $now_post_num = $_POST['now_post_num']; $get_post_num = $_POST['get_post_num']; $sql = "SELECT $wpdb->posts.ID, $wpdb->posts.post_title, $wpdb->posts.post_excerpt FROM $wpdb->posts WHERE $wpdb->posts.post_type = 'post' AND $wpdb->posts.post_status = 'publish' $wpdb->posts.post_date DESC LIMIT $now_post_num, $get_post_num"; $results = $wpdb->get_results($sql); $html = ""; foreach ($results as $result) { $html .= '<article>'; $html .= '<h2><a href="'.get_permalink($result->ID).'">'.apply_filters('the_title', $result->post_title).'</a></h2>'; $html .= ''; $html .= '</article>'; } echo $html; ?>↑※このままのコードで実行し「もっと表示」クリックでは”最新”記事から数えて6~10番目の記事が読み込まれてしまいます。
本当はsingle.phpでデフォ表示しているリストの続きを読み込みたい。
(続き→過去記事リストの6~10番目読み込み、以後続き)more-disp.phpの$sql発行の際にWHEREに
AND $wpdb->posts.post_date < 『表示中の記事のpost_data』
を入れればうまく過去の記事のみで順番に読み込みできるのではないかと考えました。しかし『表示中の記事のpost_data』をうまく変数で指定できず行き詰ってます。
アドバイスなど頂けますと助かります。
トピック「singleページでの日時指定SQLの発行(Ajaxローディング・Javascript関係)」には新たに返信することはできません。