2016-06-02 5 views
4

ワードプレスでは、私はthe_posts_paginationを使って前後のボタンとページ番号を吐き出しています。 WordPressが特定の要素をdivにグループ化したいときに、WordPressが独自のマークアップを吐き出す方法が好きではありません。WordPressのthe_posts_paginationのページ番号を自分のdivにラップする方法はありますか?

これは私の現在のコードです:私はそれのように見えるようにする機能が欲しい

HTML

<nav class="navigation pagination" role="navigation"> 
     <div class="nav-links"> 
     <a class="prev page-numbers" href="#">Prev Page</a> 
     <a class="page-numbers" href="#">1</a> 
     <span class="page-numbers current">2</span> 
     <a class="page-numbers" href="">3</a> 
     <a class="page-numbers" href="">4</a> 
     <a class="next page-numbers" href="">Next Page</a> 
    </div> 
</nav> 

:それはこれを吐く

PHP

<?php the_posts_pagination(array(
    'mid_size' => 2, 
    'prev_text' => __('Previous Page', 'textdomain'), 
    'next_text' => __('Next Page', 'textdomain'), 
    'screen_reader_text' => ('') 
)); ?> 

これは:

<nav class="navigation pagination" role="navigation"> 
     <div class="nav-links"> 
     <a class="prev page-numbers" href="#">Prev Page</a> 
     <div class="page-numbers-container"> 
      <a class="page-numbers" href="#">1</a> 
      <span class="page-numbers current">2</span> 
      <a class="page-numbers" href="">3</a> 
      <a class="page-numbers" href="">4</a> 
     </div> 
     <a class="next page-numbers" href="">Next Page</a> 
    </div> 
</nav> 

divに次のリンクや前のリンクをラップすることもできますが、これも素晴らしいと思います。私はWordPressのコアファイルから何かを編集する必要はありません。私は関数を書く必要がありますか?

EDIT

これはこれは私が

function wp_custom_pagination($args = [], $class = 'pagination') { 

      if ($GLOBALS['wp_query']->max_num_pages <= 1) return; 

      $args = wp_parse_args($args, [ 
       'mid_size'   => 2, 
       'prev_next'   => false, 
       'prev_text'   => __('Older posts', 'textdomain'), 
       'next_text'   => __('Newer posts', 'textdomain'), 
       'screen_reader_text' => __('Posts navigation', 'textdomain'), 
      ]); 

      $links  = paginate_links($args); 
      $next_link = get_previous_posts_link($args['next_text']); 
      $prev_link = get_next_posts_link($args['prev_text']); 
      $template = apply_filters('navigation_markup_template', ' 
      <nav class="navigation %1$s" role="navigation"> 
       <h2 class="screen-reader-text">%2$s</h2> 
       <div class="nav-links">%3$s<div class="page-numbers-container">%4$s</div>%5$s</div> 
      </nav>', $args, $class); 

      echo sprintf($template, $class, $args['screen_reader_text'], $prev_link, $links, $next_link); 

     } 

答えて

4

the_posts_pagination()を変更するいかなるフィルタを持っていないpaginate_links()を使用してのfunctions.php内に置くものです、私のindex.phpに

<?php the_posts_pagination(wp_custom_pagination(['prev_text' => __('Previous Page', 'textdomain'), 'next_text' => __('Next Page', 'textdomain')])); ?> 

ですあなたが望むように出力します。

それでは、カスタムページネーションのテンプレートを作成してみましょう:

function the_so37580965_wp_custom_pagination($args = [], $class = 'pagination') { 

    if ($GLOBALS['wp_query']->max_num_pages <= 1) return; 

    $args = wp_parse_args($args, [ 
     'mid_size'   => 2, 
     'prev_next'   => false, 
     'prev_text'   => __('Older posts', 'textdomain'), 
     'next_text'   => __('Newer posts', 'textdomain'), 
     'screen_reader_text' => __('Posts navigation', 'textdomain'), 
    ]); 

    $links  = paginate_links($args); 
    $next_link = get_previous_posts_link($args['next_text']); 
    $prev_link = get_next_posts_link($args['prev_text']); 
    $template = apply_filters('the_so37580965_navigation_markup_template', ' 
    <nav class="navigation %1$s" role="navigation"> 
     <h2 class="screen-reader-text">%2$s</h2> 
     <div class="nav-links">%3$s<div class="page-numbers-container">%4$s</div>%5$s</div> 
    </nav>', $args, $class); 

    echo sprintf($template, $class, $args['screen_reader_text'], $prev_link, $links, $next_link); 

} 

はそれを試してみてください。また、paginate_links()関数を見てください。必要な引数がさらにたくさんあります。

+0

index.phpでこれをどのように呼びますか? –

+0

@DarrenBachan 'the_posts_pagination(...)'コードを 'the_so37580965_wp_custom_pagination(['prev_text' => __( 'Previous Page'、 'textdomain')、 'next_text' => __( 'Next Page' '、' textdomain ')]) '。それで全部です。 – MinhTri

+0

私は何をしているのかを示すためにOPを編集しました。定義されていない関数wp_custom_pagination()を呼び出すという致命的なエラーが出ました。私はそれを少し変更しました。必要がない限り、so37580965は多すぎました。 –

関連する問題