WordPress

WordPressのサブループをWP-PageNaviプラグインを使ってページ送りさせる方法

WordPressの管理画面で作成した固定ページをブログの記事の一覧ページにしたり、カスタム投稿タイプの一覧ページにしたりすることってよくあると思います。その場合、通常はWP_Queryを使って引数を渡してやることでサブループを生成して目的の記事のリストなどを作成することになります。

そのような場合に、記事のリストを表示させる固定ページにページネーションを追加したい場合、便利なプラグイン「WP-PageNavi」という有名なプラグインがありますよね。今回はそのWP-PageNaviとサブループの連携方法について解説します。

まず、WP_Queryを使用して簡単なサブループを作成します。

<?php
    $paged = get_query_var('paged') ? get_query_var('paged') : 1;
    $my_query = new WP_Query(array(
        'paged' => $paged ,
        'posts_per_page' => 10
    ));
?>
<?php if($my_query->have_posts()): while($my_query->have_posts()): $my_query->the_post(); ?>
    <a href="<?php the_permalink(); ?>"><?php the_title(); ?></a><br>
<?php endwhile;endif;
    wp_reset_postdata();
?>

WordPressで企業サイトを構築している人なら見慣れたコードだと思います。
今回はこのコードにwp-pagenaviを使用したページネーションを導入します。

通常、wp-pagenaviを使用するときは、

wp_pagenavi();

だけで動作しますが、これはメインクエリをページネーションさせたい時の書き方となります。

WP_Queryを使用したサブループに対してwp-pagenaviを使用する場合は関数にクエリをパラメータとして渡してやる必要があります。今回の場合ですと、こんな感じになります。

wp_pagenavi(array('query'=>$my_query));

このようにwp_pagenavi関数にWP_Queryで作成したクエリを引数として渡してやります。

実際に運営中のブログやローカルで実験してみたらわかると思いますが、最初の例「wp_pagenavi();」だけではサブループのページネーションは表示されないはずです。

今回のサンプルで完成したコードは以下の通りです。

<?php
    $paged = get_query_var('paged') ? get_query_var('paged') : 1;
    $my_query = new WP_Query(array(
        'paged' => $paged ,
        'posts_per_page' => 10
    ));
?>
<?php if($my_query->have_posts()): while($my_query->have_posts()): $my_query->the_post(); ?>
    <a href="<?php the_permalink(); ?>"><?php the_title(); ?></a><br>
<?php endwhile;endif;
    wp_pagenavi(array('query'=>$my_query));
    wp_reset_postdata();
?>

11行目に

wp_pagenavi(array('query'=>$my_query));

を追加しました。

これで固定ページに作成した記事のタイトルのリストにページネーションを追加することができました。お試しあれ。

■参考ページ
http://scribu.net/wordpress/wp-pagenavi/wpn-2-74.html

ABOUT ME
アバター
ドレッド
目標必達のために鬼努力を惜しまない個人事業主。フリーライターとWeb制作のお仕事をしています。立命館大学中退。放送大学教養学部の全科履修生。中小企業診断士とFP1級を目指してハードに勉強中。

COMMENT

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

CAPTCHA