web-dev-qa-db-ja.com

'mid_size' =>を使用するときにページ番号ドットを追加するページ付け

ねえ、私は現在のページ付けを変換しようとしています:

  • 投稿者:Prev 1 2 3 Next
  • Page 1 of 2 -->

私の現在のコードは次のようになります。

if( ! function_exists( 'my_pagination' ) ) {
    function my_pagination() {
        global $wp_query;    
        $big = 999999999; // This needs to be an unlikely integer
        $paginate_links = paginate_links( array(
            'base' => str_replace( $big, '%#%', get_pagenum_link($big) ),
            'current' => max( 1, get_query_var('paged') ),
            'total' => $wp_query->max_num_pages,
            'mid_size' => 0,
            'prev_next' => True,            
            'prev_text' => __('<span class="fa fa-long-arrow-left" aria-hidden="true"></span>'),
            'next_text' => __('<span class="fa fa-long-arrow-right" aria-hidden="true"></span>'),
            'type' => 'list'
        ) );
        if ( $paginate_links ) {
            echo '<div class="pagination">';
            echo $paginate_links;
            echo '</div>';
        }
    }
}

これまでWordPressでページネーションを扱った経験があまりありませんでした。私は自分で簡単にできるようにして、単にthe_sizeを0に変更し、そしてその前後にCSSを使用してpage ofを追加することを考えました。

.pagination li:first-child:before {
    content: "Page "
}

.pagination li:first-child:after {
    content: " of"
}

しかし、それから私はWordPressが挿入していることに気づきます:

<li><span class="page-numbers dots">…</span></li>

'mid_size' => 0のため、そして明らかに私はCSSでli:nth(2) { display: none; }を使うことができるだけでした。しかし、最後のページ番号がa hrefであることも私が望んでいないことです。したがって、これらすべての回避策を使用することは、単なる面倒な作業であり、CSSではなくcodexで行う必要があります。私はいくつかの解決策を試したが成功しなかった。

追加を無効にする方法

  • <span class="page-numbers dots">…</span>
  • 最後のページ番号の<a href>
  • それとも、現在の配列を変更し続けることをどのように推奨しますか?
4
Simon Hayter

回避策は次のとおりです。

まずpaginate_links()出力タイプを次のように変更します。

'type' => 'array',

その後、paginate_links()の出力から previous current 、および next の部分を収集できます。

関連クラスをターゲットにした簡単な例を示します。

$next       = '';
$current    = '';
$prev       = '';
foreach( (array) $paginate_links as $link )
{           
    if( false !== strpos( $link, 'prev ' ) )
        $prev = $link;
    elseif( false !== strpos( $link, ' current' ) )
        $current = $link;       
    elseif( false !== strpos( $link, 'next ' ) )
        $next = $link;
}

最後に、必要に応じて出力を作成できます。

! empty( $current ) && printf(
    '<div class="pagination">%s %s %s %s %d %s</div>',
    $prev,
    esc_html__( 'Page', 'my-domain' ),
    $current,
    esc_html__( 'of', 'my-domain' ),
    $wp_query->max_num_pages,
    $next
);
3
birgire