例を含む5つのWordPressページネーションコードスニペット[シンプルからアドバンス]
公開: 2020-02-03特定の例を含むWordPressで最高のページ付けコードを探している場合は、この投稿で共有されているページ付けコードスニペットの例が非常に役立つことがわかります。 このページ付けコードは、WordPressテーマ、または投稿のページ付けが必要なカスタムWordPressプラグインに適用できます。 追跡を切り取って、お気に入りのページ付けコードスニペットを共有しましょう。
#1)単純なページ付けコードを使用したWordPressループ
WordPressループ内にページ付けを追加する場合は、以下の次および前のページ付けコードを使用できます。
<?php if(have_posts()):?> <!-ここにページネーション関数を追加します。 -> <!-メインループの開始。 -> <?php while(have_posts()):the_post(); ?> <!-テーマのメインループの残りの部分-> <?php endwhile; ?> <!-メインループの終わり-> <!-ここにページネーション関数を追加します。 -> <div class = "nav-previous alignleft"> <?php previous_posts_link( '古い投稿'); ?> </ div> <div class = "nav-next alignright"> <?php next_posts_link( '新しい投稿'); ?> </ div> <?php else:?> <p> <?php _e( '申し訳ありませんが、条件に一致する投稿はありません。'); ?> </ p> <?php endif; ?>
#2)WordPressの数値ページネーション
もう1つの優れたWordPressページネーションオプションは、投稿に番号を追加し、番号に基づいて投稿をグループ化する数値ページネーションを使用することです。 たとえば、1ページに5つの投稿を表示できます。 これは、数値ページネーションのためのWordPressのページネーションコードです:
<?php #ステップ1:数値のWordPressページネーション関数を作成する 関数njengah_numeric_pagination(){ if(is_singular()) 戻る; グローバル$ wp_query; / **ページが1つしかない場合は実行を停止します* / if($ wp_query-> max_num_pages <= 1) 戻る; $ paged = get_query_var( 'paged')? absint(get_query_var( 'paged')):1; $ max = intval($ wp_query-> max_num_pages); / **現在のページを配列に追加します* / if($ paged> = 1) $ links [] = $ paged; / **現在のページの周囲のページを配列に追加します* / if($ paged> = 3){ $ links [] = $ paged-1; $ links [] = $ paged-2; } if(($ paged + 2)<= $ max){ $ links [] = $ paged + 2; $ links [] = $ paged + 1; } echo '<div class = "navigation"> <ul>'。 "\ n"; / **前の投稿リンク* / if(get_previous_posts_link()) printf( '<li>%s </ li>'。 "\ n"、get_previous_posts_link()); / **最初のページへのリンク、および必要に応じて楕円* / if(!in_array(1、$ links)){ $ class = 1 == $ paged? 'class = "active"': ''; printf( '<li%s> <a href="%s">%s </a> </ li>'。 "\ n"、$ class、esc_url(get_pagenum_link(1))、 '1'); if(!in_array(2、$ links)) エコー '<li>…</ li>'; } / **現在のページへのリンクに加えて、必要に応じていずれかの方向に2ページ* / sort($ links); foreach((array)$ links as $ link){ $ class = $ paged == $ link? 'class = "active"': ''; printf( '<li%s> <a href="%s">%s </a> </ li>'。 "\ n"、$ class、esc_url(get_pagenum_link($ link))、$ link); } / **最後のページへのリンク、および必要に応じて楕円* / if(!in_array($ max、$ links)){ if(!in_array($ max-1、$ links)) エコー '<li>…</ li>'。 "\ n"; $ class = $ paged == $ max? 'class = "active"': ''; printf( '<li%s> <a href="%s">%s </a> </ li>'。 "\ n"、$ class、esc_url(get_pagenum_link($ max))、$ max); } / **次の投稿リンク* / if(get_next_posts_link()) printf( '<li>%s </ li>'。 "\ n"、get_next_posts_link()); エコー '</ ul> </ div>'。 "\ n"; } #STEP 2:上記の関数へのこの呼び出しを使用してテンプレートに追加します njengah_numeric_pagination(); #ステップ3:テーマのスタイルに合わせてページネーションを適切にスタイル設定する / **ページネーションのスタイルを設定するCSSクラス* / .navigation li { } .navigation li a { }
#3)WordPressAjaxページ付けの例
WordPressでAjaxページ付けコードを探している場合は、GitHubで非常にうまく機能し、コードがプラグインの形式である例を見つけました。 チュートリアル用のプラグインになるようにカスタマイズしました。コードをファイルにコピーしてzip形式で保存し、プラグインとしてインストールできます。 以下は、WordPressAjaxページ付けのサンプルコードです。
<?php / ** *プラグイン名:Njengah Ajax Pagination *プラグインURI:https://njengah.com *説明:WordPressAjaxページ付けの例。 *バージョン:1.0.0 *著者:Joe Njenga *作成者URI:https://njengah.com *ライセンス:GPL-2.0 + *ライセンスURI:http://www.gnu.org/licenses/gpl-2.0.txt *テキストドメイン:cs-pagination *ドメインパス:/ languages * / //クレジット-CasperSchultz クラスNjengah_Ajax_Pagination { 保護された$ num_per_page; パブリック関数__construct(){ $ this-> num_per_page = 5; $ this-> init(); } 保護された関数init(){ add_action( 'init'、array($ this、 'add_rewrite_rule')); add_filter( 'query_vars'、array($ this、 'add_query_vars')); add_action( 'parse_request'、array($ this、 'parse_request')); } / ** *着信リクエストを解析し、結果を生成します。 * / function parse_request($ wp){ if(array_key_exists( 'cs-page'、$ wp-> query_vars)){ $ page = isset($ wp-> query_vars ['cs-page'])? $ wp-> query_vars ['cs-page']:1; $ args = array( 'post_type' => 'post'、 'post_per_page' => $ this-> num_per_page、 'paged' => $ page、 ); $ query = new WP_Query($ args); //見つかった投稿の総数を知る必要があります。 $ values ['total'] = $ query-> found_posts; //そしてページごと。 $ values ['per_page'] = $ this-> num_per_page; $ values ['posts'] = array(); //必要なデータのみを送信します。 while($ query-> have_posts()){ $ query-> the_post(); $ values ['posts'] [] = array( 'ID' => get_the_ID()、 'title' => get_the_title()、 ); } wp_reset_postdata(); wp_send_json($ values); } } / ** *必要なクエリ引数を追加します。 * / function add_query_vars($ query_vars){ $ query_vars [] = 'cs-page'; $ query_varsを返します; } / ** * admin-ajaxの使用を回避できるように、カスタムページ付けの書き換えルールを追加します。 * / 関数add_rewrite_rule(){ add_rewrite_rule( '^ cs-paginate /([0-9] +)/?'、 'index.php?cs-page = $ matches [1]'、 'top'); } / ** *リライトルールをフラッシュします。 * / 静的関数install(){ flush_rewrite_rules(); } } 関数njengah_ajax_pagination_init(){ 新しいNjengah_Ajax_Pagination(); } njengah_ajax_pagination_init(); //アクティベーション時に書き換えルールをフラッシュする必要があります。 register_activation_hook(__ FILE __、array( 'Njengah_Ajax_Pagination'、 'install'));
#4)カスタム投稿タイプのWordPressページ付け
カスタム投稿タイプのページネーションの場合、WP_queryを使用してカスタム投稿タイプを確認する必要があります。引数でカスタム投稿タイプをpost_typeに渡し、ページネーションコードを使用してカスタム投稿タイプのWordPressページネーションを作成します。
以下は、functions.phpに追加し、post_typeをそれぞれのカスタム投稿タイプスラッグに置き換える必要があるコードです。
<?php / ** *カスタム投稿タイプのWordPressページ付け * / <?php $ paged =(get_query_var( 'paged'))? get_query_var( 'paged'):1; $ args = array( 'post_type' => 'custom_post_type_name'、 'posts_per_page' => 10 'paged' => $ paged ); $ loop = new WP_Query($ args); while($ loop-> have_posts()):$ loop-> the_post(); //カスタム投稿タイプのコンテンツ 終わり; ?> <nav class = "pagination"> <?php $ big = 999999999; echo paginate_links(array( 'base' => str_replace($ big、 '%#%'、get_pagenum_link($ big))、 'format' => '?paged =%#%'、 'current' => max(1、get_query_var( 'paged'))、 '合計' => $ loop-> max_num_pages、 'prev_text' => '&laquo;'、 'next_text' => '&raquo;' )); ?> </ nav> <?php wp_reset_postdata(); ?>
#5カスタムクエリページネーションWordPress
WordPressのカスタムクエリページ付けコードは、WP_queryを利用してページ付けする特定の投稿を取得し、クエリの結果をページ付けコードと組み合わせて、選択した特定の投稿にページ付けを適用します。 以下は、WordPressでのカスタムクエリページネーションの例です。
<?php //カスタムクエリ $ paged =(get_query_var( 'paged'))? absint(get_query_var( 'paged')):1; $ args = array( 'posts_per_page' => 5 'category_name' => 'ギャラリー'、 'paged' => $ paged、 ); $ the_query = new WP_Query($ args); ?> <!-ループなど。-> <?php //ページ付け $ big = 999999999; //ありそうもない整数が必要 echo paginate_links(array( 'base' => str_replace($ big、 '%#%'、esc_url(get_pagenum_link($ big)))、 'format' => '?paged =%#%'、 'current' => max(1、get_query_var( 'paged'))、 '合計' => $ the_query-> max_num_pages ));
結論
この投稿では、さまざまなタイプのWordPressページ付けを強調し、それぞれの場合に使用する特定のページ付けコードを共有しました。 WordPressのこのページ付けコードは、既存のテーマまたはプラグインに追加でき、スタンドアロンプラグインとしてWordPressに追加することもできます。