Title: singleページでの日時指定SQLの発行（Ajaxローディング・Javascript関係）
Last modified: 2016年7月30日

---

# singleページでの日時指定SQLの発行（Ajaxローディング・Javascript関係）

 *  解決済 [humao](https://ja.wordpress.org/support/users/humao/)
 * (@humao)
 * [12年、 11ヶ月前](https://ja.wordpress.org/support/topic/single%e3%83%9a%e3%83%bc%e3%82%b8%e3%81%a7%e3%81%ae%e6%97%a5%e6%99%82%e6%8c%87%e5%ae%9asql%e3%81%ae%e7%99%ba%e8%a1%8c%ef%bc%88ajax%e3%83%ad%e3%83%bc%e3%83%87%e3%82%a3%e3%83%b3%e3%82%b0%e3%83%bbjavascr/)
 * 参考サイト：WordPress ページングはやめてAjaxローディングにする（http://hijiriworld.
   com/web/wp-ajax-loading/）
 * **やりたい事**
    １．singleページにてバックナンバー（表示中の記事より過去の投稿
   のみ）の一覧表示 ２．一覧の読み込みを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』をうまく変数で指定できず行き詰ってます。
    アドバイス
   など頂けますと助かります。

1件の返信を表示中 - 1 - 1件目 (全1件中)

 *  トピック投稿者 [humao](https://ja.wordpress.org/support/users/humao/)
 * (@humao)
 * [12年、 11ヶ月前](https://ja.wordpress.org/support/topic/single%e3%83%9a%e3%83%bc%e3%82%b8%e3%81%a7%e3%81%ae%e6%97%a5%e6%99%82%e6%8c%87%e5%ae%9asql%e3%81%ae%e7%99%ba%e8%a1%8c%ef%bc%88ajax%e3%83%ad%e3%83%bc%e3%83%87%e3%82%a3%e3%83%b3%e3%82%b0%e3%83%bbjavascr/#post-168461)
 * 自己解決しましたので、解決済みとさせていただきます。
    ありがとうございました

1件の返信を表示中 - 1 - 1件目 (全1件中)

 トピック「singleページでの日時指定SQLの発行（Ajaxローディング・Javascript関係）」
には新たに返信することはできません。

 * フォーラム: [使い方全般](https://ja.wordpress.org/support/forum/how-to-and-troubleshooting/)
 * 1件の返信
 * 1人の参加者
 * 最後の返信者: [humao](https://ja.wordpress.org/support/users/humao/)
 * 最後の活動: [12年、 11ヶ月前](https://ja.wordpress.org/support/topic/single%e3%83%9a%e3%83%bc%e3%82%b8%e3%81%a7%e3%81%ae%e6%97%a5%e6%99%82%e6%8c%87%e5%ae%9asql%e3%81%ae%e7%99%ba%e8%a1%8c%ef%bc%88ajax%e3%83%ad%e3%83%bc%e3%83%87%e3%82%a3%e3%83%b3%e3%82%b0%e3%83%bbjavascr/#post-168461)
 * 状態: 解決済

## トピック

### 人気のトピック

### 返信がないトピック

### サポート関連ではないトピック

### 解決済みのトピック

### 未解決のトピック

### すべてのトピック
