web-dev-qa-db-ja.com

何も表示しないようにpaginate_links() 'end_size'を取得

私はpaginate_links()関数を使って作業しており、この種のスタイルでページ付けを作成しようとしています。

<3 4 5 6 7>

論理的には、end_sizeを0に、mid_sizeを2に設定すると簡単になると思いました。

私はこれをしましたが、私のコードはこのように出力しています。

<1 ... 3 4 5 6 7 ... 9>

私には、これを0に設定したにもかかわらず、end_sizeが1と表示されています(オプションが何をするのか誤解しない限り)。

私の現在のページ付けリンク機能はこのように見えます。

$paginationArgs = array(
    'base'          => str_replace( $big, '%#%', esc_url( get_pagenum_link( $big ) ) ),
    'format'        => '?paged=%#%',
    'current'       => max( 1, get_query_var('paged') ),
    'total'         => $loop->max_num_pages,
    'end_size'      => 0,
    'mid_size'      => 1,
    'prev_next'     => TRUE,
    'prev_text'     => '<',
    'next_text'     => '>',
    'type'          => 'list',
    'add_args'      => FALSE,
    'add_fragment'  => ''
)
$pagination = paginate_links($paginationArgs);

誰かアドバイスや回答がありますか?

ありがとう、ハリー。

2
Harry Francis

これは1つの提案です:

まず、paginate_links()にHTMLリストではなく配列を返させる必要があります。

'type' => 'array',

それでは、次のように出力を取得します。

$paginate_links = paginate_links( $paginationArgs );

計画はそれからほしいリンクを除外することです。

現在の値を取得しましょう:

$c = $paginationArgs['current'];

検索フィルタを次のように構築します。

$allowed = [
    ' current',
    'prev ',
    'next ',
    sprintf( '/page/%d/', $c-2 ),
    sprintf( '/page/%d/', $c-1 ),
    sprintf( '/page/%d/', $c+1 ),
    sprintf( '/page/%d/', $c+2 )
];

我々はこれを端のまわりで洗練し、利用可能なものだけをフィルタリングすることができることに注意してください。これをmid_size属性に動的に依存させることも可能です。ここで我々はそれを仮定する:

'mid_size' => 2,

また注意してください。

'end_size' => 0,

以下のpaginate_links()コア関数のチェックのため、end_sizeは1です。

if ( $end_size < 1 ) {
    $end_size = 1;
}

次に、許可されたページネーションリンクをフィルタリングします。

$paginate_links = array_filter(
    $paginate_links,
    function( $value ) use ( $allowed ) {
        foreach( (array) $allowed as $tag )
        {
            if( false !== strpos( $value, $tag ) )
                return true;
        }
        return false;
    }
);

最後に結果を表示します。

if( ! empty( $paginate_links ) )
    printf(
        "<ul class='page-numbers'>\n\t<li>%s</li>\n</ul>\n",
        join( "</li>\n\t<li>", $paginate_links )
    );

あなたのニーズに合わせて調整できることを願っています!

3
birgire