Örneklerle 5 WordPress Sayfalama Kod Parçacıkları [Basitten Gelişmişe]
Yayınlanan: 2020-02-03Belirli örneklerle WordPress'te en iyi sayfalandırma kodunu arıyorsanız, bu gönderide paylaşılan sayfalandırma kodu parçacıklarının örneklerini çok faydalı bulacaksınız. Bu sayfalandırma kodunu WordPress temasına veya gönderi sayfalandırması gerektiren özel bir WordPress eklentisine uygulayabilirsiniz. Peşini bırakmama izin verin ve favori sayfalandırma kod parçacıklarımı paylaşayım:
#1) Basit Sayfalandırma Kodu ile WordPress Döngüsü
WordPress döngüsüne sayfalama eklemek istiyorsanız, aşağıdaki sonraki ve önceki sayfalandırma kodunu kullanabilirsiniz:
<?php if ( have_posts() ) : ?> <!-- Sayfalandırma işlevlerini buraya ekleyin. --> <!-- Ana döngünün başlangıcı. --> <?php while ( have_posts() ) : the_post(); ?> <!-- temanızın ana döngüsünün geri kalanı --> <?php bitiş zamanı; ?> <!-- Ana döngünün sonu --> <!-- Sayfalandırma işlevlerini buraya ekleyin. --> <div class="nav-previous alignleft"><?php önceki_posts_link('Eski gönderiler'); ?></div> <div class="nav-next alignright"><?php next_posts_link( 'Yeni gönderiler'); ?></div> <?php başka : ?> <p><?php _e('Üzgünüz, kriterlerinize uygun gönderi bulunamadı.'); ?></p> <?php endif; ?>
#2) WordPress Sayısal Sayfalandırma
Bir başka harika WordPress sayfalandırma seçeneği, gönderilere sayılar ekleyen ve gönderileri bir sayıya göre gruplayan sayısal sayfalamayı kullanmaktır. Örneğin, bir sayfada 5 gönderi görüntüleyebilirsiniz. Bu, WordPress'teki sayısal sayfalama için sayfalandırma kodudur :
<?php #ADIM 1: Sayısal WordPress sayfalandırma işlevini oluşturun function njengah_numeric_pagination() { if( is_singular() ) dönüş; küresel $wp_query; /** Yalnızca 1 sayfa varsa yürütmeyi durdur */ if( $wp_query->max_num_pages <= 1 ) dönüş; $paged = get_query_var('paged')? absint( get_query_var( 'paged' ) ) : 1; $max = intval( $wp_query->max_num_pages); /** Geçerli sayfayı diziye ekle */ if ( $paged >= 1 ) $bağlantılar[] = $sayfalanmış; /** Geçerli sayfanın etrafındaki sayfaları diziye ekle */ if ( $paged >= 3 ) { $bağlantılar[] = $sayfalanmış - 1; $bağlantılar[] = $sayfalanmış - 2; } if ( ( $paged + 2 ) <= $max ) { $bağlantılar[] = $sayfalanmış + 2; $bağlantılar[] = $sayfalanmış + 1; } echo '<div class="navigation"><ul>' . "\n"; /** Önceki Yazı Bağlantısı */ if ( get_previous_posts_link() ) printf( '<li>%s</li>' . "\n", get_previous_posts_link() ); /** İlk sayfaya bağlantı, ayrıca gerekirse üç nokta */ if ( !in_array( 1, $bağlantılar ) ) { $sınıf = 1 == $sayfalanmış ? ' class="aktif"' : ''; printf( '<li%s><a href="%s">%s</a></li>' . "\n", $class, esc_url( get_pagenum_link( 1 ) ), '1' ); if ( !in_array( 2, $bağlantılar ) ) yankı '<li>…</li>'; } /** Geçerli sayfaya bağlantı artı gerekirse her iki yönde 2 sayfa */ sırala( $bağlantılar); foreach ((dizi) $bağları $bağ olarak) { $sınıf = $sayfalanmış == $bağlantı ? ' class="aktif"' : ''; printf( '<li%s><a href="%s">%s</a></li>' . "\n", $class, esc_url( get_pagenum_link( $link ) ), $link ); } /** Son sayfaya bağlantı artı gerekirse üç nokta */ if ( !in_array( $maks, $bağlantılar ) ) { if ( !in_array( $max - 1, $bağlantılar ) ) yankı '<li>…</li>' . "\n"; $sınıf = $sayfalanmış == $maks ? ' class="aktif"' : ''; printf( '<li%s><a href="%s">%s</a></li>' . "\n", $class, esc_url( get_pagenum_link( $max ) ), $max ); } /** Sonraki Gönderi Bağlantısı */ if ( get_next_posts_link() ) printf( '<li>%s</li>' . "\n", get_next_posts_link() ); yankı '</ul></div>' . "\n"; } #ADIM 2: Yukarıdaki işleve yapılan bu çağrıyı kullanarak şablonlara ekleyin njengah_numeric_pagination(); #ADIM 3: Sayfalandırmayı tema stillerinize uyacak şekilde uygun şekilde şekillendirin /** Sayfalandırmayı Stillendirmek için CSS Sınıfları*/ .navigasyon li { } .navigasyon li bir{ }
#3) WordPress Ajax Sayfalandırma Örneği
WordPress'te Ajax sayfalama kodunu arıyorsanız, GitHub'da çok iyi çalışan bir örnek buldum ve kod bir eklenti şeklinde. Onu öğreticimiz için bir eklenti yapmak üzere özelleştirdim ve kod bir dosyaya kopyalanabilir ve zip biçiminde kaydedilebilir ve bir eklenti olarak kurulabilir. Aşağıdaki WordPress Ajax sayfalandırma örnek kodudur:
<?php /** * Eklenti Adı: Njengah Ajax Sayfalandırması * Eklenti URI'si: https://njengah.com * Açıklama: WordPress Ajax sayfalandırma örneği. * Sürüm: 1.0.0 * Yazar: Joe Njenga * Yazar URI'si: https://njengah.com * Lisans: GPL-2.0+ * Lisans URI'si: http://www.gnu.org/licenses/gpl-2.0.txt * Metin Alanı: cs-sayfalandırma * Etki Alanı Yolu: / diller */ // Kredi - Casper Schultz class Njengah_Ajax_Pagination { korumalı $num_per_page; genel işlev __construct() { $bu->num_per_page = 5; $bu->init(); } korumalı fonksiyon init() { add_action( 'init', dizi( $bu, 'add_rewrite_rule' ) ); add_filter( 'query_vars', dizi( $bu, 'add_query_vars' ) ); add_action('parse_request', dizi($bu, 'parse_request')); } /** * Gelen isteği ayrıştırın ve sonucu oluşturun. */ 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 = dizi( 'post_type' => 'gönder', 'post_per_page' => $bu->num_per_page, 'paged' => $sayfa, ); $sorgu = new WP_Query( $args); // Bulunan toplam gönderi sayısını bilmemiz gerekiyor. $values['total'] = $query->found_posts; // Ve sayfa başına. $değerler['per_page'] = $this->num_per_page; $değerler['gönderiler'] = dizi(); // Sadece ihtiyacımız olan verileri gönderelim. while ( $query->have_posts() ) { $query->the_post(); $değerler['gönderiler'][] = dizi( 'ID' => get_the_ID(), 'başlık' => get_the_title(), ); } wp_reset_postdata(); wp_send_json($değerler); } } /** * Gerekli sorgu argümanlarını ekleyin. */ function add_query_vars( $query_vars ) { $query_vars[] = 'cs sayfası'; $query_vars döndür; } /** * admin-ajax kullanmaktan kaçınabilmemiz için özel sayfalandırmamız için bir yeniden yazma kuralı ekler. */ function add_rewrite_rule() { add_rewrite_rule( '^cs-paginate/([0-9]+)/?', 'index.php?cs-page=$matches[1]', 'top' ); } /** * Yeniden yazma kurallarını temizleyin. */ statik fonksiyon kurulumu() { flush_rewrite_rules(); } } function njengah_ajax_pagination_init() { yeni Njengah_Ajax_Pagination(); } njengah_ajax_pagination_init(); // Aktivasyonda yeniden yazma kurallarının temizlenmesi gerekiyor. register_activation_hook( __FILE__, array( 'Njengah_Ajax_Pagination', 'kurulum' ) );
#4) Özel Yazı Tipi için WordPress Sayfalandırması
Özel gönderi türü sayfalandırması için, özel gönderi türünü kontrol etmek için WP_query'yi kullanmanız gerekir ve argümanlarda, özel gönderi türünü post_type'a iletirsiniz ve ardından özel gönderi türü için WordPress sayfalandırmasını oluşturmak için sayfalama kodunu kullanırsınız.
Function.php'ye eklemeniz ve post_type'ı ilgili özel yazı tipi bilginizle değiştirmeniz gereken kod aşağıdadır:
<?php /** * Özel Yazı Tipleri için WordPress Sayfalandırması */ <?php $paged = ( get_query_var( 'paged' ) ) ? get_query_var('sayfalanmış') : 1; $args = dizi( 'post_type' => 'custom_post_type_name', 'posts_per_page' => 10, 'paged' => $sayfalandı ); $döngü = yeni WP_Query( $args); while ( $loop->have_posts() ) : $loop->the_post(); // Özel gönderi türü içeriği son zaman; ?> <nav class="sayfalandırma"> <?php $büyük = 999999999; echo paginate_links( dizi( 'base' => str_replace( $big, '%#%', get_pagenum_link( $big ) ), 'format' => '?paged=%#%', 'current' => max( 1, get_query_var('paged') ), 'toplam' => $loop->max_num_pages, 'prev_text' => '«', 'next_text' => '»' ) ); ?> </nav> <?php wp_reset_postdata(); ?>
#5 Özel Sorgu Sayfalandırma WordPress
WordPress'teki özel sorgu sayfalandırma kodu, sayfalandırma yapmak istediğimiz belirli gönderiyi almak için WP_query'yi kullanır ve ardından sayfalandırmayı seçtiğimiz belirli gönderilere uygulamak için sorgunun sonuçlarını sayfalama koduyla birleştirir. Aşağıdaki, WordPress'te özel sorgu sayfalandırma örneğidir.
<?php //Özel Sorgu $paged = ( get_query_var( 'paged' ) ) ? absint( get_query_var( 'paged' ) ) : 1; $args = dizi( 'posts_per_page' => 5, 'category_name' => 'galeri', 'paged' => $sayfalandı, ); $the_query = new WP_Query( $args); ?> <!-- döngü vb. --> <?php // Sayfalandırma $büyük = 999999999; // olası olmayan bir tamsayıya ihtiyaç var echo paginate_links( dizi( 'base' => str_replace( $big, '%#%', esc_url( get_pagenum_link( $big ) ) ), 'format' => '?paged=%#%', 'current' => max( 1, get_query_var('paged') ), 'toplam' => $the_query->max_num_pages ) );
Çözüm
Bu gönderide, farklı WordPress sayfalandırma türlerini vurguladık ve her durum için kullanılacak belirli sayfalandırma kodunu paylaştık. WordPress'teki bu sayfalandırma kodu, mevcut temalara veya eklentiye eklenebilir ve ayrıca WordPress'e bağımsız bir eklenti olarak eklenebilir.