web-dev-qa-db-ja.com

paginate_links()関数を使用したフロントページの改ページの問題

私は次のスニペットを使用してページネーションを出力しています:

// get the current page     
if ( get_query_var('paged') ) {
    $current_page = get_query_var('paged');
} else if ( get_query_var('page') ) {
    $current_page = get_query_var('page');
} else {
    $current_page = 1;
}

// structure of “format” depends on whether we’re using pretty permalinks
$permalink_structure = get_option('permalink_structure');
$format = empty( $permalink_structure ) ? '&page=%#%' : 'page/%#%/';

echo paginate_links(array(
      'base' => get_pagenum_link(1) . '%_%',
      'format' => $format,
      'current' => $current_page,
      'total' => $total,
      'mid_size' => 4,
      'type' => 'list'
));

パーマリンクタイプをhttp://wordpress/?p=123に設定し、ページネーションのあるフロントページに静的ページを使用すると、次のような間違ったURLを受け取ります。

http://wordpress/&page=2

の代わりに:

http://wordpress/?page=2

http://wordpress/?page=2に移動すると、クエリのある現在のURLがベースになるため、ページネーションのリンクも間違っています。次に例を示します。

http://wordpress/?page=2&page=3

書き換えに他のパーマリンクタイプを使用すると、すべて正常に機能します。

このスニペットとフロントページの改ページの解決策を探しています。

助けてくれてありがとう。

PDATE:私の主な問題は&page=%#%のミスタイプでしたが、実際には&paged=%#%が必要で、フロントページクエリの&?に切り替えるためにis_front_page()関数で条件を追加します。

2
KOt

私はthinkこれは、コードが厳密にあなたがtelling _するようにしているからです。

$format = empty( $permalink_structure ) ? '&page=%#%' : 'page/%#%/';

注:'&page=%#%'

&?の適切な追加を処理する add_query_arg() を使用してパーマリンク構造を構築してみてください。

1
Chip Bennett