0

投稿にページ付けを実装しようとしています。私はphp関数とそれを呼び出す方法に少しこだわっていますが。

簡単な方法はこれだと思います:

<?php posts_nav_link(); ?>

しかし、カスタムページネーションが必要な場合はどうなりますか?

これが私の現在のコードです:

<?php 
    global $wp_query;
    $total = $wp_query->max_num_pages;
    if ( $total > 1 )  {
         if ( !$current_page = get_query_var('paged') )
              $current_page = 1;
         echo paginate_links(array(
              'base' => get_pagenum_link(1) . '%_%',
              'format' => '?paged=%#%',
              'current' => $current_page,
              'total' => $total,
              'mid_size' => 4,
              'type' => 'list'
         ));
    }
?>

これは正しいですか、どうすればそれを呼び出すことができますか?index.phpで?ループのどこですか?ありがとう。

明確にするために編集:このコードを実装するにはどうすればよいですか?現時点では、functions.phpに配置しています。したがって、ページネーションが表示されるように、この関数をどのように(そしてループのどこで)参照するのですか?

4

1 に答える 1

2

このコードを実装するには、2 つの方法があります。現在、あなたはその 2 つの中間にいるように見えます。

<?php endwhile; ?>最初の方法は、ループ内のどこか (ほとんどの場合、終了タグの直前の場所) で使用されるページネーション コードをテンプレートに直接追加することです。single.php テンプレートを使用している場合はそこに配置し、使用していない場合は index.php に配置します。ループ内の配置は、ページネーションをページのどこに表示するかによって異なります。

2 番目の方法は、ページネーション コードを functions.php ファイルに追加することです (既に行っています)。ただし、これにはコードを少し修正する必要があります。コードを関数内にラップし、その関数に何か名前を付ける必要があります。例に使用your_custom_paginationしました。functions.php ファイルは既に php タグでラップされている可能性が高いため、それらを削除しました。

function your_custom_pagination() {
    global $wp_query;
    $total = $wp_query->max_num_pages;
    if ( $total > 1 ) {
        if ( !$current_page = get_query_var('paged') ) {
            $current_page = 1;
        }
        echo paginate_links(array(
            'base' => get_pagenum_link(1) . '%_%',
            'format' => '?paged=%#%',
            'current' => $current_page,
            'total' => $total,
            'mid_size' => 4,
            'type' => 'list'
        ));
    }
}

次に、使用しているテンプレートに移動し、このコード<?php your_custom_pagination(); ?>を上で示したのと同じ場所に配置して、ページネーション関数を呼び出す必要があります。

私は実際にあなたのコードをテストしていないので、それが有効であると仮定すると、すべてうまくいくはずです.

于 2012-05-02T20:16:39.937 に答える