WordPress: SimpleBootstrap テーマにページング機能入れてみた。

今まで過去の投稿と新しい投稿しかなくて不便だと思っていたので無理やり作った。

たぶんテーマを変えてもコードを読むときに役立つのではないかと思う。

いろいろコードを見たところ

wp_content/themes/simple-bootstrap/

の下にあるいわゆるテンプレートファイルから function.php の機能を呼び出すことによって、投稿のカード化その他もろもろをやっているらしい。

過去の投稿、新しい投稿のボタンに関しては

function.php 内にある simple_boostrap_page_navi()

を index.php , category.php , single.php 等で呼び出していた。

そこで自分は考えた。

この function をパクればいいんじゃないかと。デザインに関してもクラスによって指定されているのでそれを書き加えてしまえばいい。

結果できたのがこれ。

function.php にこの関数を書き込む。

pagenate_links という関数は type 指定で型を変えられるらしい。クラスを付け加えるために array にした。

function the_pagination() {
  global $wp_query;
  $bignum = 999999999;
  if ( $wp_query->max_num_pages <= 1 )
    return;
  $pagenate_links = paginate_links( array(
    'base'         => str_replace( $bignum, '%#%', esc_url( get_pagenum_link($bignum) ) ),
    'format'       => '',
    'current'      => max( 1, get_query_var('paged') ),
    'total'        => $wp_query->max_num_pages,
    'prev_text'    => '&larr;',
    'next_text'    => '&rarr;',
    'type'         => 'array',
    'end_size'     => 1,
    'mid_size'     => 2
  ) );
  echo '<nav class="block"><ul class="pager"><li>';
  echo join('</li><li>',$pagenate_links);
  echo '</li></ul></nav>';
}

これを simple_boostrap_page_navi() のかわりによぶ、

またはこれの中身をいい感じに simple_boostrap_page_navi() 内に入れ込めばいい感じになるかもしれない(語彙力

よびかた

<?php //index.php,category.php 等で simple_bootstrap_page_navi() をさがす。その下あたりに書く。
<?php simple_boostrap_page_navi(); ?>

<?php the_pagenation(); ?>

呼ぶ場所はかならず simple_bootstrap_page_navi() である必要はない。
好きなところによぶ。

ちなみに simple_bootstrap_page_navi() を改造していれてみたのがこれ。

function simple_boostrap_page_navi() {
    global $wp_query;
  $bignum = 999999999;
  if ( $wp_query->max_num_pages <= 1 )
    return;
  $pagenate_links = paginate_links( array(
    'base'         => str_replace( $bignum, '%#%', esc_url( get_pagenum_link($bignum) ) ),
    'format'       => '',
    'current'      => max( 1, get_query_var('paged') ),
    'total'        => $wp_query->max_num_pages,
    'prev_next'	=>  false,
    'prev_text'    => '&larr;&larr;',
    'next_text'    => '&rarr;&rarr;',
    'type'         => 'array',
    'end_size'     => 1,
    'mid_size'     => 2
  ) );
    ?>

    <?php if (get_next_posts_link() || get_previous_posts_link()) { ?>
        <nav class="block">
            <ul class="pager">
                <li class="next"><?php next_posts_link("&laquo; " . __('Older posts', "simple-bootstrap")); ?></li>
        <li>
 		<?php echo join('</li><li>',$pagenate_links); ?>
        </li>
                <li class="previous"><?php previous_posts_link(__('Newer posts', "simple-bootstrap") . " &rsquo;"); ?></li>
            </ul>
        </nav>
    <?php } ?>

    <?php
}

pagenate_links の前後の li クラスは next と previous で入れ替えてある。

なんか逆になってみにくそうだったため。

 

コメントを残す

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

CAPTCHA