5個帶有示例的WordPress分頁代碼片段[從簡單到高級]

已發表: 2020-02-03

WordPress 示例中的分頁代碼 如果您正在尋找帶有特定示例的 WordPress 中最好的分頁代碼,您會發現這篇文章中共享的分頁代碼片段示例非常有用。 您可以在 WordPress 主題或需要帖子分頁的自定義 WordPress 插件中應用此分頁代碼。 讓我切入正題,分享我最喜歡的分頁代碼片段:

#1) 帶有簡單分頁代碼的 WordPress 循環

如果要在 WordPress 循環中添加分頁,可以使用下面的下一個和上一個分頁代碼:

 <?php if ( have_posts() ) : ?>

<!-- 在此處添加分頁功能。 -->

<!-- 主循環的開始。 -->
<?php while ( have_posts() ) : the_post(); ?>

<!-- 主題主循環的其餘部分 -->

<?php 結束; ?>
<!-- 主循環結束 -->

<!-- 在此處添加分頁功能。 -->

<div class="nav-previous alignleft"><?php previous_posts_link('舊帖'); ?></div>
<div class="nav-next alignright"><?php next_posts_link('較新的帖子'); ?></div>

<?php 其他:?>
<p><?php _e('抱歉,沒有帖子符合您的條件。'); ?></p>
<?php endif; ?>

#2) WordPress 數字分頁

另一個很棒的 WordPress 分頁選項是使用數字分頁,將數字添加到帖子並根據數字對帖子進行分組。 例如,您可以在一個頁面上顯示 5 個帖子。 這是WordPress 中用於數字分頁的分頁代碼

 <?php 

#STEP 1:創建數字WordPress分頁功能 

函數 njengah_numeric_pagination() {
 
    if( is_singular() )
        返回;
 
    全局 $wp_query;
 
    /** 如果只有 1 頁則停止執行 */
    如果($wp_query->max_num_pages <= 1)
        返回;
 
    $paged = get_query_var('paged') ? absint(get_query_var('paged')):1;
    $max = intval($wp_query->max_num_pages);
 
    /** 將當前頁面添加到數組中 */
    如果 ( $paged >= 1 )
        $鏈接[] = $分頁;
 
    /** 將當前頁面周圍的頁面添加到數組中 */
    if ( $paged >= 3 ) {
        $links[] = $paged - 1;
        $links[] = $paged - 2;
    }
 
    if ( ( $paged + 2 ) <= $max ) {
        $links[] = $paged + 2;
        $links[] = $paged + 1;
    }
 
    迴聲'<div class="navigation"><ul>'。 "\n";
 
    /** 上一篇文章鏈接 */
    如果(get_previous_posts_link())
        printf( '<li>%s</li>' . "\n", get_previous_posts_link() );
 
    /** 鏈接到第一頁,必要時加上省略號 */
    if ( ! in_array( 1, $links ) ) {
        $class = 1 == $paged ? ' 類="活動"' : '';
 
        printf( '<li%s><a href="%s">%s</a></li>' . "\n", $class, esc_url( get_pagenum_link( 1 ) ), '1' );
 
        如果(!in_array(2,$鏈接))
            迴聲'<li>…</li>';
    }
 
    /** 鏈接到當前頁面,如有必要,在任一方向加上 2 個頁面 */
    排序($鏈接);
    foreach ( (array) $links as $link ) {
        $class = $paged == $link ? ' 類="活動"' : '';
        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 ? ' 類="活動"' : '';
        printf( '<li%s><a href="%s">%s</a></li>' . "\n", $class, esc_url( get_pagenum_link( $max ) ), $max );
    }
 
    /** 下一篇文章鏈接 */
    如果 ( get_next_posts_link() )
        printf( '<li>%s</li>' . "\n", get_next_posts_link() );
 
    迴聲'</ul></div>'。 "\n";
 
}

#STEP 2:使用對上述函數的調用添加到模板 

njengah_numeric_pagination();

#STEP 3:適當設置分頁樣式以適合您的主題樣式 

/** 用於設置分頁樣式的 CSS 類*/ 

.導航李{
    
}
.navigation li a{
	
	
}

#3) WordPress Ajax 分頁示例

如果您正在尋找 WordPress 中的 Ajax 分頁代碼,我在 GitHub 上找到了一個運行良好的示例,並且代碼採用插件的形式。 我已經對其進行了定制,使其成為我們教程的插件,並且可以將代碼複製到文件中並以 zip 格式保存並作為插件安裝。 以下是 WordPress Ajax 分頁示例代碼:

 <?php
/**
 * 插件名稱:Njengah Ajax 分頁
 * 插件 URI:https://njengah.com 
 * 描述:WordPress Ajax 分頁示例。
 * 版本:1.0.0
 * 作者:喬恩傑加
 * 作者 URI:https://njengah.com 
 * 許可證:GPL-2.0+
 * 許可證 URI:http://www.gnu.org/licenses/gpl-2.0.txt
 * 文本域:cs-pagination
 * 域路徑:/languages
 */

// 信用 - 卡斯珀舒爾茨 

類 Njengah_Ajax_Pagination {

	受保護的 $num_per_page;

	公共函數 __construct() {
		$this->num_per_page = 5;
		$this->init();
	}

	受保護的函數初始化(){
		add_action('init', array($this, 'add_rewrite_rule'));
		add_filter('query_vars', 數組($this, 'add_query_vars'));
		add_action('parse_request', array($this, '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 = 數組(
				'post_type' => '發布',
				'post_per_page' => $this->num_per_page,
				'分頁' => $page,
			);

			$query = new WP_Query($args);

			// 我們需要知道找到的帖子總數。
			$values['total'] = $query->found_posts;

			// 以及每頁。
			$values['per_page'] = $this->num_per_page;

			$values['posts'] = array();

			// 讓我們只發送我們需要的數據。
			而 ( $query->have_posts() ) {

				$query->the_post();

				$values['posts'][] = array(
					'ID' => get_the_ID(),
					'title' => get_the_title(),
				);
			}

			wp_reset_postdata();
			wp_send_json( $values );
		}
	}

	/**
	 * 添加所需的查詢參數。
	 */
	函數 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' );
	}

	/**
	 *刷新重寫規則。
	 */
	靜態函數安裝(){
		刷新重寫規則();
	}
}


功能 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 並用您各自的自定義帖子類型 slug 替換 post_type 的代碼:

 <?php 

/**
 * 自定義帖子類型的 WordPress 分頁  
 */ 
 
 <?php

 $paged = (get_query_var('paged')) ? get_query_var(“分頁”):1;

	$args = 數組(
		 'post_type' => 'custom_post_type_name',
		 'posts_per_page' => 10,
		 '分頁' => $分頁
	);

	$loop = new WP_Query($args);

	while ( $loop->have_posts() ) : $loop->the_post();
 
 // 自定義帖子類型內容 
 
結束;
?>
<nav class="分頁">
     <?php
     $大 = 999999999;
     迴聲分頁鏈接(數組(
          'base' => str_replace( $big, '%#%', get_pagenum_link( $big ) ),
          '格式' => '?paged=%#%',
          '當前' => 最大值(1,get_query_var('paged')),
          'total' => $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 = 數組(
    'posts_per_page' => 5,
    'category_name' => '畫廊',
    '分頁' => $分頁,
);
 
$the_query = new WP_Query($args);
?>
<!-- 循環等.. -->

<?php

// 分頁 
$大 = 999999999; // 需要一個不太可能的整數
 
迴聲分頁鏈接(數組(
    'base' => str_replace( $big, '%#%', esc_url( get_pagenum_link( $big ) ) ),
    '格式' => '?paged=%#%',
    '當前' => 最大值(1,get_query_var('paged')),
    'total' => $the_query->max_num_pages
));

結論

在這篇文章中,我們重點介紹了不同類型的 WordPress 分頁,並共享了用於每種情況的特定分頁代碼。 WordPress 中的此分頁代碼可以添加到現有主題或插件中,也可以作為獨立插件添加到 WordPress。