Paginare numerică pentru tipuri de postări personalizate
Am creat o pagină personalizată pentru a afișa o buclă de CPT cu câmpuri personalizate.
Trebuie să adaug o paginare numerică și am încercat cu acest cod dar nu funcționează.
Functions.php
function pagination_bar() {
global $wp_query;
$total_pages = $wp_query->max_num_pages;
if ($total_pages > 1){
$current_page = max(1, get_query_var('paged'));
echo paginate_links(array(
'base' => get_pagenum_link(1) . '%_%',
'format' => '/page/%#%',
'current' => $current_page,
'total' => $total_pages,
));
}
}
custompage.php
<!--Buclă Psalmi-->
<?php
$paged = ( get_query_var( 'paged' ) ) ? get_query_var( 'paged' ) : 1;
$loop = new WP_Query( array( 'post_type' => 'salmi',
'posts_per_page' => 15,
'paged' => $paged )
);
while ( $loop->have_posts() ) : $loop->the_post(); ?>
<!--Coloane Conținut-->
<div class="salmicpt">
<div class="wpb_column vc_column_container td-pb-span8">
<div class="titlecpt"><?php the_title(); ?></div>
</div>
<div class="wpb_column vc_column_container td-pb-span4">
<?php if( get_field('audio_salmi') ): ?>
<a href="<?php the_field('audio_salmi'); ?>" ><img src="mysite.com/wp-content/uploads/cuffia-cpt-e1481533293805.png" alt="Ascultă" title="Ascultă" /></a>
<?php endif; ?>
<?php if( get_field('salmi_pdf') ): ?>
<a href="<?php the_field('salmi_pdf'); ?>" ><img src="mysite.com/wp-content/uploads/freccia-32.png" alt="Descarcă PDF" title="Descarcă PDF" /></a>
<?php endif; ?>
</div>
<div style='clear:both'></div><hr class="style-one" />
</div>
<nav class="pagination">
<?php pagination_bar(); ?>
</nav>
<?php endwhile; wp_reset_query(); ?>
Unde este greșeala?? Mulțumesc
Faci referire la obiectul global $wp_query
în funcția ta, pe care l-ai resetat folosind wp_reset_query()
.
Poți rezolva problema de paginare prin transmiterea obiectului tău personalizat $loop
WP_Query către funcție. De asemenea, am schimbat wp_reset_query
în wp_reset_postdata
.
De asemenea, apelezi funcția de paginare în interiorul loop-ului while în loc să o apelezi după acesta.
Funcția ta ar trebui actualizată astfel:
function pagination_bar( $custom_query ) {
$total_pages = $custom_query->max_num_pages;
$big = 999999999; // un număr foarte mare și improbabil
if ($total_pages > 1){
$current_page = max(1, get_query_var('paged'));
echo paginate_links(array(
'base' => str_replace( $big, '%#%', esc_url( get_pagenum_link( $big ) ) ),
'format' => '?paged=%#%',
'current' => $current_page,
'total' => $total_pages,
));
}
}
iar în fișierul tău custompage.php:
<!--Loop Salmi-->
<?php
$paged = ( get_query_var( 'paged' ) ) ? get_query_var( 'paged' ) : 1;
$loop = new WP_Query( array( 'post_type' => 'salmi',
'posts_per_page' => 15,
'paged' => $paged )
);
if ( $loop->have_posts() ):
while ( $loop->have_posts() ) : $loop->the_post(); ?>
<!--Coloane Conținut -->
<div class="salmicpt">
<div class="wpb_column vc_column_container td-pb-span8">
<div class="titlecpt"><?php the_title(); ?></div>
</div>
<div class="wpb_column vc_column_container td-pb-span4">
<?php if( get_field('audio_salmi') ): ?>
<a href="<?php the_field('audio_salmi'); ?>" ><img src="mysite.com/wp-content/uploads/cuffia-cpt-e1481533293805.png" alt="Ascultă" title="Ascultă" /></a>
<?php endif; ?>
<?php if( get_field('salmi_pdf') ): ?>
<a href="<?php the_field('salmi_pdf'); ?>" ><img src="mysite.com/wp-content/uploads/freccia-32.png" alt="Descarcă PDF" title="Descarcă PDF" /></a>
<?php endif; ?>
</div>
<div style='clear:both'></div><hr class="style-one" />
</div>
<?php endwhile; ?>
<nav class="pagination">
<?php pagination_bar( $loop ); ?>
</nav>
<?php wp_reset_postdata();
endif;

Mulțumesc mult, dar problema rămâne.. văd paginarea, dar dacă dau click nu merge pe a doua pagină, ci se reîncarcă și rămâne pe aceeași pagină.
Linkurile pe numărul de pagină sunt http://mysite.it/page/2/page/2/page/2/page/3?page_id=415/page/3

copiază și lipește în fișierul tău functions.php
function pagination_bar( $query_wp )
{
$pages = $query_wp->max_num_pages;
$big = 999999999; // un număr improbabil de mare
if ($pages > 1)
{
$page_current = max(1, get_query_var('paged'));
echo paginate_links(array(
'base' => str_replace( $big, '%#%', esc_url( get_pagenum_link( $big ) ) ),
'format' => '?paged=%#%',
'current' => $page_current,
'total' => $pages,
));
}
}
**copiază și lipește codul în fișierul tău custompage.php **
<?php
$paged = ( get_query_var( 'paged' ) ) ? get_query_var( 'paged' ) : 1;
$args = array('post_type'=>'salmi','posts_per_page' => 15,'paged' => $paged);
$the_query = new WP_Query($args);
if ( $the_query->have_posts() ):
while ( $the_query->have_posts() ) : $the_query->the_post(); ?>
<!--Coloana Conținut -->
<div class="salmicpt">
<div class="wpb_column vc_column_container td-pb-span8">
<div class="titlecpt"><?php the_title(); ?></div>
</div>
<div class="wpb_column vc_column_container td-pb-span4">
<?php if( get_field('audio_salmi') ): ?>
<a href="<?php the_field('audio_salmi'); ?>" >
<img src="mysite.com/wp-content/uploads/cuffia-cpt-e1481533293805.png" alt="Ascultă" title="Ascultă" />
</a>
<?php endif; ?>
<?php if( get_field('salmi_pdf') ): ?>
<a href="<?php the_field('salmi_pdf'); ?>" >
<img src="mysite.com/wp-content/uploads/freccia-32.png" alt="Descarcă PDF-ul" title="Descarcă PDF-ul" />
</a>
<?php endif; ?>
</div>
<div style='clear:both'></div><hr class="style-one" />
</div>
<?php endwhile; ?>
<nav class="pagination">
<?php pagination_bar( $the_query ); ?>
</nav>
<?php wp_reset_postdata();
endif;

Faceți următoarele modificări în fișierul custompage.php
<?php
$paged = ( get_query_var( 'page' ) ) ? get_query_var( 'page' ) : 1;
$args = array('post_type'=>'salmi','posts_per_page' => 15,'paged' => $paged);
$the_query = new WP_Query($args);
if ( $the_query->have_posts() ):
while ( $the_query->have_posts() ) : $the_query->the_post(); ?>
<!--Coloana Conținut -->
<div class="salmicpt">
<div class="wpb_column vc_column_container td-pb-span8">
<div class="titlecpt"><?php the_title(); ?></div>
</div>
<div class="wpb_column vc_column_container td-pb-span4">
<?php if( get_field('audio_salmi') ): ?>
<a href="<?php the_field('audio_salmi'); ?>" >
<img src="mysite.com/wp-content/uploads/cuffia-cpt-e1481533293805.png" alt="Ascultă" title="Ascultă" />
</a>
<?php endif; ?>
<?php if( get_field('salmi_pdf') ): ?>
<a href="<?php the_field('salmi_pdf'); ?>" >
<img src="mysite.com/wp-content/uploads/freccia-32.png" alt="Descarcă PDF-ul" title="Descarcă PDF-ul" />
</a>
<?php endif; ?>
</div>
<div style='clear:both'></div><hr class="style-one" />
</div>
<?php endwhile; ?>
<nav class="pagination">
<?php pagination_bar( $the_query ); ?>
</nav>
<?php wp_reset_postdata();
endif;
</div>
Și în functions.php
function pagination_bar( $query_wp )
{
$pages = $query_wp->max_num_pages;
$big = 999999999; // un număr improbabil
if ($pages > 1)
{
$page_current = max(1, get_query_var('page'));
echo paginate_links(array(
'base' => str_replace( $big, '%#%', esc_url( get_pagenum_link( $big ) ) ),
'format' => '?paged=%#%',
'current' => $page_current,
'total' => $pages,
));
}
}
Acest lucru funcționează perfect
