Title: ページング
Last modified: 2010年11月3日

---

# ページング

 *  解決済 [webarton](https://ja.wordpress.org/support/users/webarton/)
 * (@webarton)
 * [15年、 11ヶ月前](https://ja.wordpress.org/support/topic/%e3%83%9a%e3%83%bc%e3%82%b8%e3%83%b3%e3%82%b0/)
 * こんにちは、あるページに取得したデータの一覧を表示しているのですが、ページング
   させたいと思っています。テンプレートを作ってページで読み込んでいます。
 * プラグインWP-PageNaviを入れているので、それを使えればと思ったのですが、単に
 *     ```
       <?php if(function_exists('wp_pagenavi')) { wp_pagenavi(); } ?>
       ```
   
 * と追加してもページングしないし、他にどういう方法でページングできるのかわからず
   困っています。
 * 他にもごちゃごちゃとやってみているのですが、解決せずに4日たってしまいました。
   
   ほんとにすみません、教えて頂けないでしょうか。 よろしくお願い致します。
 * それから、パーマリンクは /%year%/%category%/%postname%/ としています。
 * こちらが現在のテンプレートです。
 *     ```
       <?php
       /*
       Template Name: Category_Event
       */
   
       get_header(); ?>
       <div id="main">
       <?php
       //過去開催イベントを降順に取得
       $query = "SELECT pm.meta_value,p.post_title,p.ID"
       . " FROM wp_postmeta AS pm, wp_posts p"
       . " WHERE p.ID = pm.post_id"
       . " AND pm.meta_key = '_EventStartDate'"
       . " AND pm.meta_value <= CURRENT_TIMESTAMP( 0 )"
       . " ORDER BY pm.meta_value DESC"
       ;
       //  sql実行
        $terms = $wpdb->get_results($query);
       //  sqlのデータを処理
        foreach ($terms as $value){
       ?>
            <?php echo the_event_start_date($value->ID); ?> <a href="<?php echo get_permalink($value->ID); ?>"><?php echo $value->post_title; ?></a>
       <?php echo get_the_post_thumbnail($value->ID, 'thumbnail'); ?>
       <?php
        }
       ?>
       </div>
       <?php get_footer(); ?>
       ```
   

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

 *  トピック投稿者 [webarton](https://ja.wordpress.org/support/users/webarton/)
 * (@webarton)
 * [15年、 11ヶ月前](https://ja.wordpress.org/support/topic/%e3%83%9a%e3%83%bc%e3%82%b8%e3%83%b3%e3%82%b0/#post-132882)
 * すみません、補足です。
    自分でやってみているのは、ページ数を$_GETで取得するや
   りかたなのですが、 それですと2ページ以降をクリックしたときURLがの最後に「/?p=
   2」などとつく形になるため、「ページがありません」になってしまいます。
 * $_GETでどのようにすれば「ページがありません」にならずに次のページが表示できる
   のか、解決できればと思いますが、特に$_GETにこだわっているわけではなく、他の方法
   があれば教えて頂けると大変嬉しいです。
 *  [LVP8](https://ja.wordpress.org/support/users/lvp8/)
 * (@lvp8)
 * [15年、 11ヶ月前](https://ja.wordpress.org/support/topic/%e3%83%9a%e3%83%bc%e3%82%b8%e3%83%b3%e3%82%b0/#post-132884)
 * sql関連は分からないので見当違いかもしれませんが、この処理は、meta_key = _EventStartDate
   に値を持っている投稿を取得し、その値（日付や時間などの数値データ？）によりソート
   表示する、というものでしょうか？
 *  トピック投稿者 [webarton](https://ja.wordpress.org/support/users/webarton/)
 * (@webarton)
 * [15年、 11ヶ月前](https://ja.wordpress.org/support/topic/%e3%83%9a%e3%83%bc%e3%82%b8%e3%83%b3%e3%82%b0/#post-132887)
 * 言葉が足りずすみません。そうなんです、meta_key の値が _EventStartDate　で、
    
   pm.meta_valueの値に日時が入っています。その日付が今日より前のデータを抽出してい
   ます。
 * 抽出して、一覧表示はできる状態です。
 *  [LVP8](https://ja.wordpress.org/support/users/lvp8/)
 * (@lvp8)
 * [15年、 11ヶ月前](https://ja.wordpress.org/support/topic/%e3%83%9a%e3%83%bc%e3%82%b8%e3%83%b3%e3%82%b0/#post-132888)
 * sql の知識がないので、違う角度からになりますが、query_posts でいけそうな気がし
   ます。**未検証**ですが、こんな感じでどうでしょう。
 *     ```
       <div id="main">
       <?php
       $paged = (get_query_var('paged')) ? get_query_var('paged') : 1;
       $posts_per_page = (get_query_var('posts_per_page')) ? get_query_var('posts_per_page') : get_option('posts_per_page');
       $currentTime = date('Y-m-d H:i:s', time()+32400);
       query_posts(array(
       	'posts_per_page' => $posts_per_page,
       	'meta_key' => '_EventStartDate',
       	'meta_compare' => '<=',
       	'meta_value' => $currentTime,
       	'orderby' => 'meta_value_num',
       	'order' => 'DESC',
       	'paged' => $paged
       ));
       while ( have_posts() ) : the_post();
       ?>
   
       <?php echo get_post_meta($post->ID, '_EventStartDate', true); ?>
       <a href="<?php the_permalink(); ?>"><?php the_title(); ?></a>
       <?php echo get_the_post_thumbnail($post->ID, 'thumbnail'); ?>
   
       <?php endwhile; ?>
       </div>
   
       <?php
       if(function_exists('wp_pagenavi')) { wp_pagenavi(); }
       wp_reset_query();
       ?>
       ```
   
 *  トピック投稿者 [webarton](https://ja.wordpress.org/support/users/webarton/)
 * (@webarton)
 * [15年、 11ヶ月前](https://ja.wordpress.org/support/topic/%e3%83%9a%e3%83%bc%e3%82%b8%e3%83%b3%e3%82%b0/#post-132890)
 * LVP8さん！！！ページングできましたーーーーーーーーー！！！！！！！
    書いてくだ
   さったほんとにほんとにありがとうございます！
 * でも一つわからないことがありまして、今までのSQL結果は以下なのですが、
 * > 2010年10月29日 リボンワーク
   >  2010年10月28日 12:00 AM ソープカービング 2010年
   > 9月1日 4:00 PM イベント 2010年5月29日 8:00 AM かこ 2010年4月29日 8:00 AM か
   > こ 2010年4月4日 1:00 PM test 2010年3月29日 8:00 AM かこ 2010年2月1日 かこ 2010
   > 年1月29日 8:00
 * 今回の結果は以下で、表示順が降順でなくなりました。
 * > 1ページ目
   >  2010-10-28 00:00:00ソープカービング 2010-10-29 00:00:00リボンワーク
   > 2010-01-29 08:00:00かこ 2010-02-01 00:00:00かこ 2010-03-29 08:00:00かこ
   > 2ページ目
   >  2010-04-29 08:00:00かこ 2010-05-29 08:00:00かこ 2010-09-01 16:00:
   > 00イベント 2010-04-04 13:00:00tes
 * meta_keyが日付型でなくて、longtext型だったのですが、それが原因でしょうか・・・
 * `'orderby' => 'meta_value_num',`
 * を変換すればよいのでしょうか。本当にすみません。
 *  [LVP8](https://ja.wordpress.org/support/users/lvp8/)
 * (@lvp8)
 * [15年、 11ヶ月前](https://ja.wordpress.org/support/topic/%e3%83%9a%e3%83%bc%e3%82%b8%e3%83%b3%e3%82%b0/#post-132892)
 * 5行目を下記に変更したらどうなりますか？
    ※時間を一桁表示にされているので、うまく
   拾えないかもですが･･･。 `$currentTime = date('Y年m月d g:i A', time()+32400);`
 *  トピック投稿者 [webarton](https://ja.wordpress.org/support/users/webarton/)
 * (@webarton)
 * [15年、 11ヶ月前](https://ja.wordpress.org/support/topic/%e3%83%9a%e3%83%bc%e3%82%b8%e3%83%b3%e3%82%b0/#post-132894)
 * LVP8さん、すみません！
    見直してみて、私がorder byで使いたかった日付が、meta_value_num
   でなくmeta_valueに入っていたので、以下の内容で実現できました！
 *     ```
       <?php
       /*
       Template Name: Category_Event
       */
   
       get_header(); ?>
   
       <div id="main">
   
       <?php
       $paged = (get_query_var('paged')) ? get_query_var('paged') : 1;
       $posts_per_page = (get_query_var('posts_per_page')) ? get_query_var('posts_per_page') : get_option('posts_per_page');
       $currentTime = date('Y-m-d H:i:s', time()+32400);
       query_posts(array(
       	'posts_per_page' => $posts_per_page,
       	'meta_key' => '_EventStartDate',
       	'meta_compare' => '<=',
       	'meta_value' => $currentTime,
       	'orderby' => 'meta_value',
       	'order' => 'DESC',
       	'paged' => $paged
       ));
       while ( have_posts() ) : the_post();
       ?>
   
       <?php echo get_post_meta($post->ID, '_EventStartDate', true); ?>
       <a href="<?php the_permalink(); ?>"><?php the_title(); ?></a>
       <?php echo get_the_post_thumbnail($post->ID, 'thumbnail'); ?>
   
       <?php endwhile; ?>
       </div>
   
       <?php
       if(function_exists('wp_pagenavi')) { wp_pagenavi(); }
       wp_reset_query();
       ?>
       <?php get_footer(); ?>
       ```
   
 * 私、勝手にquery_postsでは取得できないと思いこんでいました。
    これができないと
   本当に困ったので、助けてくださって本当にありがとうございます。

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

 トピック「ページング」には新たに返信することはできません。

## タグ

 * [ページング](https://ja.wordpress.org/support/topic-tag/%e3%83%9a%e3%83%bc%e3%82%b8%e3%83%b3%e3%82%b0/)

 * フォーラム: [使い方全般](https://ja.wordpress.org/support/forum/how-to-and-troubleshooting/)
 * 7件の返信
 * 2人の参加者
 * 最後の返信者: [webarton](https://ja.wordpress.org/support/users/webarton/)
 * 最後の活動: [15年、 11ヶ月前](https://ja.wordpress.org/support/topic/%e3%83%9a%e3%83%bc%e3%82%b8%e3%83%b3%e3%82%b0/#post-132894)
 * 状態: 解決済

## トピック

### 人気のトピック

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

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

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

### 未解決のトピック

### すべてのトピック
