Cum se creează paginarea WordPress pentru tipuri de postări personalizate

Publicat: 2020-02-24

Paginare tip postare personalizată WordPress Crearea de paginare pentru tipuri de postări personalizate nu ar trebui să fie o provocare, deoarece puteți reutiliza aceeași idee pe care am folosit-o aici - cum să creați paginarea personalizată a interogărilor în WordPress. Trebuie să interogăm tipul de postare personalizat, apoi să afișăm postările de interogări din acel tip de postare sau în mai multe tipuri de postare.

În această postare, vă voi arăta cum să creați paginarea WordPress pentru tipurile de postări personalizate. Paginarea va fi similară cu această paginare numerică. Vom crea o interogare personalizată care primește toate tipurile de postări personalizate, apoi vom afișa tipurile de postări personalizate cu bucla și cu paginarea numărului.

Creați un tip de postare personalizat

Primul pas este să creați un tip de postare personalizat folosind următorul cod:

 /**
  * Tip personalizat de postare - register_post_type()
  * @description- Njengah Tutorial Exemplu de tip de postare personalizat 
  * @link -https://gist.github.com/Njengah/839466b773085ac2430772e081357cee
  *
  */ 


	add_action('init', "njengah_tutorial_cpt");
  
  
	funcția njengah_tutorial_cpt(){
		
		$labels = array(
				'name' => _x('Tutoriale', 'nume general tip post'),
				'singular_name' => _x('Tutorial', 'post type singular name'),
				'menu_name' => _x('Tutoriale', 'meniu admin'),
				'name_admin_bar' => _x('Tutorial', 'adăugaţi nou pe bara de administrare'),
				'add_new' => _x('Adăugați nou', ''),
				'add_new_item' => __('Adăugați un tutorial nou'),
				'edit_item' => __('Edit Tutorial'),
				'new_item' => __('Tutorial nou'),
				'all_items' => __('Tot Tutorialul'),
				'view_item' => __('Vedeți tutorialul'),
				'search_items' => __('Tutoriale de căutare'),
				'not_found' => __('Nu s-au găsit tutoriale'),
				'not_found_in_trash' => __('Nu s-au găsit tutoriale în Coșul de gunoi'), 
				'parent_item_colon' => __('Tutoriale pentru părinți:'),
				
		);

			$args = matrice(
				'ierarhic' => adevărat,     
				'labels' => $labels,
				„public” => adevărat,
				'publicly_queryable' => adevărat,  
				'description' => __('Descriere.'),
				'show_ui' => adevărat, 
				'show_in_menu' => adevărat,
				'show_in_nav_menus' => adevărat,			
				'query_var' => adevărat,
				'rewrite' => adevărat,
				'query_var' => adevărat,
				'rewrite' => array('slug' => 'tutorial'),
				'capability_type' => 'pagină',
				'has_archive' => adevărat, 
				'menu_position' => 22,
				„show_in_rest” => adevărat,
				'supports' => array( 'titlu', 'editor', 'autor', 'miniatură', 'comentarii', 'reviziuni', 'atribute-paginii', 'câmpuri-personalizate')
			); 

			register_post_type('tutorial', $args);
		
		
	}

Adăugați acest cod în fișierul functions.php și veți vedea tipul de postare personalizat „ Tutoriale” care va apărea pe tabloul de bord WordPress.

Paginare WordPress pentru tipul de postare personalizat

Acest cod poate fi modificat pentru a se potrivi cu tipul de postare personalizat. Tipul de postare personalizat poate fi creat și folosind pluginurile de generare a tipului de postare personalizat.

Creați un șablon de pagină pentru a afișa tipuri de postări personalizate

Trebuie să creăm un șablon de pagină personalizat care va fi folosit pentru a afișa tipurile de postări personalizate folosind bucla WordPress.

Pentru a crea un șablon de pagină personalizat, ar trebui să creați un fișier nou în folderul rădăcină al temei dvs.

Denumiți fișierul – custom -page.php sau orice alt nume care este descriptiv pentru tipul de postare personalizată, de exemplu pentru tipul de postare personalizat creat deasupra numelui ar putea fi tutorials-page.php.

În acest fișier adăugați antetul șablonului de pagină personalizată folosind următorul cod și salvați modificările:

 <?php
/**
 * Numele șablonului: șablon de tutoriale
 */
 
 get_header(); 

Acum ar trebui să vedeți că șablonul de pagină personalizată este vizibil în opțiunea șablonului atributelor paginii, așa cum se arată mai jos:

Creați paginație WordPress pentru tipul de postare personalizat

Creați o interogare personalizată tip postare personalizată

Interogarea personalizată este primul pas care ne va permite să interogăm tipurile de postări personalizate existente și să le afișam pe șablonul de pagină personalizată creat la pasul precedent.

Următorul este codul care va interoga tipul de postare personalizat de tutoriale și va prelua primele două postări, apoi le va afișa pe șablonul de pagină personalizată creat mai sus.

 <?php
/**
 * Numele șablonului: șablon de tutoriale
 */
 
 get_header(); 
 
 
 // Pasul 1: Creați o interogare personalizată 
 
 $paginat = ( get_query_var( 'paginat' ) ) ? get_query_var('paginat'): 1;
 
  $args = matrice(
               'posts_per_page' => 2,// interogați ultimele 2 postări  
			   'post_type' => 'tutorial', 
               'paginat' => $paginat
             );
			 
$customPostQuery = new WP_Query($args);


?>

Afișați postări personalizate de tutorial în șablonul de pagină personalizată

Următorul este codul care va interoga tipul de postare personalizat și le va afișa pe șablonul de pagină personalizată:

 <?php
/**
 * Numele șablonului: șablon de tutoriale
 */
 
 get_header(); 
 
 
 // Pasul 1: Creați o interogare personalizată 
 
 $paginat = ( get_query_var( 'paginat' ) ) ? get_query_var('paginat'): 1;
 
  $args = matrice(
               'posts_per_page' => 2,// interogați ultimele 2 postări  
			   'post_type' => 'tutorial', 
               'paginat' => $paginat
             );
			 
$customPostQuery = new WP_Query($args);


?> 

<!-- Pasul 2: Afișați postările pe care le-am interogat în Pasul 1 -->

<div class="wrap">
 
	<div id="primary" class="content-area">
		
		<main id="main" class="site-main" role="main">
		
			<?php
			
			if($customPostQuery->have_posts()): 
			
               while($customPostQuery->have_posts()):
                   
				       $customPostQuery->the_post();
					   
					     global $post;
                ?>
		
		          <div class ="inner-content-wrap">
				  
						<ul class ="cq-posts-list">
						
						 <li>
						   <h3 class ="cq-h3"><a href="<?php the_permalink(); ?>" ><?php the_title(); ?></a></h3>
								<div>
								  <ul>
									<div>
											<a href="<?php the_permalink(); ?>"><?php the_post_thumbnail('thumbnail'); ?></a>
									</div>
								  </ul>
								  
								  <ul>
											<p><?php echo the_content(); ?></p>
								  </ul>
								
								</div>
						  </li>
						</ul>
				</div> <!-- terminați postările de pe blog -->
						  
			<?php endwhile; 
			
	     endif; 
	 
			 wp_reset_query();

Creați o funcție personalizată de paginare a postării WordPress

În acest pas, acum ar trebui să creăm o funcție de paginare a tipului de postare personalizată care va fi adăugată la funcțiile temei și va fi apelată după ce bucla afișează tipurile de postări personalizate.

Următorul cod ar trebui adăugat la functions.php pentru a crea funcția de paginare personalizată a tipului de postare.

 // Funcție personalizată de paginare a tipului de postare 
	
    funcția cpt_pagination($pagini = '', $interval = 4)
    {
        $showitems = ($interval * 2)+1;
        global $paged;
        if(gol ($paginat)) $paginat = 1;
        if($pagini == '')
        {
            global $wp_query;
            $pagini = $wp_query->max_num_pages;
            dacă(!$pagini)
            {
                $pagini = 1;
            }
        }
        if(1 != $pagini)
        {
            echo „<nav aria-label='Exemplu de navigare în pagină'> <ul class='pagination'> <span>Pagina „.$paged.” din „.$pages.”</span>”;
            if($paged > 2 && $paged > $range+1 && $showitems < $pages) echo „<a href="".get_pagenum_link(1)."'>&laquo; First</a>";
            if($paged > 1 && $showitems < $pages) echo "<a href='".get_pagenum_link($paged - 1)."'>&lsaquo; Previous</a>";
            pentru ($i=1; $i <= $pagini; $i++)
            {
                dacă (1 != $pagini &&( !($i >= $paginat+$gamă+1 || $i <= $pagină-$gamă-1) || $pagini <= $showitems ))
                {
                    ecou ($paginat == $i)? „<li class=\"page-item active\"><a class='page-link'>".$i."</a></li>":"<li class='page-item' > <a href='".get_pagenum_link($i)."' class=\"page-link\">".$i."</a></li>";
                }
            }
            if ($paged < $pages && $showitems < $pages) echo " <li class='page-item'><a class='page-link' href=\"".get_pagenum_link($paged + 1)." \">i class='flaticon flaticon-back'></i></a></li>";
            if ($paged < $pages-1 && $paged+$range-1 < $pages && $showitems < $pages) echo " <li class='page-item'><a class='page-link' href=' ".get_pagenum_link($pages)."'><i class='flaticon flaticon-arrow'></i></a></li>";
            ecou „</ul></nav>\n”;
        }
  }

Apelați funcția de paginare a tipului de postare personalizat în șablon de pagină

Deoarece am creat funcția de paginare a tipului de postare personalizat și am rulat deja bucla și am afișat tipurile de postare personalizate, acum trebuie să adăugăm funcția de paginare în partea de jos a șablonului de pagină personalizată, astfel încât să afișăm paginarea.

Următorul este codul care ar trebui folosit pentru a verifica dacă există funcția personalizată de post-paginare și dacă există, ar trebui să o apelăm pentru a afișa paginarea

 // Pasul 3: Apelați funcția de paginare aici  
			 
  dacă (funcție_există ("cpt_pagination")) {
				
   cpt_pagination($customPostQuery->max_num_pages); 
			 
}

Am creat un tip de postare personalizat, un șablon de pagină personalizat, am adăugat o funcție de paginare a tipului de postare personalizat și am afișat atât tipurile de postare personalizate cu o interogare, cât și funcția de paginare a tipului de postare personalizat.

Stiluri de paginare personalizate pentru tipul de postare

Trebuie să adăugați stilurile la paginarea tipului de postare personalizat folosind următorul cod:

 /**
 * Stiluri de paginare personalizate pentru tipul de postare
 * @autorul Joe Njenga
 */ 

.paginare {
   clar:ambele;
   poziție:rudă;
   dimensiunea fontului: 16px; 
   înălțimea liniei: 13px;
   float:dreapta; 
	list-style-type:none;
	latime: 100%
}
.pagination span, .pagination a {
   display:bloc;
   plutește la stânga;
   marjă: 2px 2px 2px 0;
   umplutură: 6px 9px 5px 9px;
   text-decor:niciuna;
   latime:auto;
   culoare:#fff; 
   fundal: #237697; 
}
.pagination a:hover{
   culoare:#fff;
   fundal: #000; 
}
.pagination .current{
   umplutură: 6px 9px 5px 9px;
   fundal: #999; 
   culoare:#fff;

Suntem gata să vedem rezultatul acestui cod. Pentru a vizualiza paginarea tipului de postare personalizată, trebuie să creați o pagină nouă cu șablonul de pagină personalizată pe care l-am creat în al doilea pas.

funcție de paginare personalizată a tipului de postare

După crearea acestei pagini, ar trebui să vedeți că pagina afișează tipul de postare personalizat pe care l-am interogat și paginarea pe care am creat-o, așa cum se arată în imaginea de mai jos:

paginare personalizată a tipului de postare

Gânduri finale

Pentru a crea o paginare personalizată a tipului de postare, trebuie să creați șablonul de pagină personalizată, să adăugați interogarea personalizată pentru a obține toate postările personalizate pe care doriți să o afișați și să apelați funcția de paginare personalizată pe care o adăugați în funcțiile.php. Pentru a obține acest cod complet, l-am adăugat la git repo și îl puteți accesa aici – WordPress Custom Post Type Pagination.