admin管理员组文章数量:1410730
I have more than 15 posts and I am displaying only 6 per page load and remaining will display after the click on the pagination but the issue is I am not getting my pagination.
I am using below code
function recentPost_on_home(){
ob_start();
?>
<div class="cp-seeWrapper"><div class="row"><div class="col-xl-8 col-lg-8 col-md-8 col-sm-12 col-xs-12"><div class="row">
<?php $args = array('posts_per_page' => 6);
$tyler_query = new WP_Query( $args );
if ($tyler_query->have_posts()) {
while ( $tyler_query->have_posts() ) {
$tyler_query->the_post();
$categories = get_the_category(); $names = ''; if ( $categories && is_array( $categories )) { foreach ( $categories as $cat ) { $names .= $cat->name . ' '; } }?>
<div class="col-xl-6 col-lg-6 col-md-6 col-sm-12 col-xs-12">
<div class="cp-shadow cp-seeSinglePostWrapper">
<?php echo get_the_post_thumbnail();?>
<div class="bg-white single-post-box">
<div class="d-flex cp-CategoryList">
<div class="seeDate"><?php echo get_the_date('F j, Y');?></div>
<?php echo $names;?>
</div>
<div class="cp-heading"><h3><a href="<?php echo esc_url( get_the_permalink() );?>" title="<?php echo esc_attr( the_title_attribute('echo=0'));?>" class="seePost_title"><?php echo wp_trim_words(get_the_title(), 10, '...');?></a></h3></div>
<p><?php echo wp_trim_words(get_the_excerpt(), 20, '...');?></p>
</div>
</div>
</div>
<?php }?>
<div class="nav-previous alignleft">hello<?php next_posts_link(); ?></div>
<div class="nav-next alignright"><?php echo previous_posts_link( 'Newer posts' ); ?></div>
<?php }?>
</div>
</div>
<div class="col-xl-4 col-lg-4 col-md-4 col-sm-12 col-xs-12">
<!--some logic here-->
</div>
</div>
</div>
<?php return ob_get_clean();
}
add_shortcode( 'home_recent_post', 'recentPost_on_home' );
The second issue is, I am getting all the categories of the single product, I have to display only 2 categories.
For example, product is IOS and categories are iPhone and iMac,iPod. So I have to display iPhone and iMac only.
I have more than 15 posts and I am displaying only 6 per page load and remaining will display after the click on the pagination but the issue is I am not getting my pagination.
I am using below code
function recentPost_on_home(){
ob_start();
?>
<div class="cp-seeWrapper"><div class="row"><div class="col-xl-8 col-lg-8 col-md-8 col-sm-12 col-xs-12"><div class="row">
<?php $args = array('posts_per_page' => 6);
$tyler_query = new WP_Query( $args );
if ($tyler_query->have_posts()) {
while ( $tyler_query->have_posts() ) {
$tyler_query->the_post();
$categories = get_the_category(); $names = ''; if ( $categories && is_array( $categories )) { foreach ( $categories as $cat ) { $names .= $cat->name . ' '; } }?>
<div class="col-xl-6 col-lg-6 col-md-6 col-sm-12 col-xs-12">
<div class="cp-shadow cp-seeSinglePostWrapper">
<?php echo get_the_post_thumbnail();?>
<div class="bg-white single-post-box">
<div class="d-flex cp-CategoryList">
<div class="seeDate"><?php echo get_the_date('F j, Y');?></div>
<?php echo $names;?>
</div>
<div class="cp-heading"><h3><a href="<?php echo esc_url( get_the_permalink() );?>" title="<?php echo esc_attr( the_title_attribute('echo=0'));?>" class="seePost_title"><?php echo wp_trim_words(get_the_title(), 10, '...');?></a></h3></div>
<p><?php echo wp_trim_words(get_the_excerpt(), 20, '...');?></p>
</div>
</div>
</div>
<?php }?>
<div class="nav-previous alignleft">hello<?php next_posts_link(); ?></div>
<div class="nav-next alignright"><?php echo previous_posts_link( 'Newer posts' ); ?></div>
<?php }?>
</div>
</div>
<div class="col-xl-4 col-lg-4 col-md-4 col-sm-12 col-xs-12">
<!--some logic here-->
</div>
</div>
</div>
<?php return ob_get_clean();
}
add_shortcode( 'home_recent_post', 'recentPost_on_home' );
The second issue is, I am getting all the categories of the single product, I have to display only 2 categories.
For example, product is IOS and categories are iPhone and iMac,iPod. So I have to display iPhone and iMac only.
Share Improve this question edited Nov 2, 2019 at 17:04 fuxia♦ 107k39 gold badges255 silver badges459 bronze badges asked Nov 2, 2019 at 15:12 Naren VermaNaren Verma 2491 gold badge6 silver badges19 bronze badges 2- It is not clear what you are asking for and is not clear why you use the buffer. Does "After 'click'" means client-side scripting? Or you have to create some additional pages for categories? Did you do this? – Max Yudin Commented Nov 2, 2019 at 15:29
- @MaxYudin, Sorry for the late reply, I am using buffer because I was getting some issue with HTML. My output was displaying before the parent div. Check this wordpress.stackexchange/questions/351688/… – Naren Verma Commented Nov 2, 2019 at 18:29
1 Answer
Reset to default 1You're using a custom query (new WP_Query
), so you need to pass $tyler_query->max_num_pages
(the max pages) to the next_posts_link()
function — more details here:
next_posts_link( null, $tyler_query->max_num_pages )
And btw, no need to echo
with previous_posts_link()
because the function indeed echoes the output. I.e. Just do so: <?php previous_posts_link(); ?>
.
Also, you should add paged
to your query args ($args
):
$args = array(
'posts_per_page' => 6,
'paged' => get_query_var( 'paged' ),
);
$tyler_query = new WP_Query( $args );
But if you're using the shortcode on a single post or Page, previous_posts_link()
wouldn't work since it relies upon a global variable named $paged
which is set only for archive-based requests such as search results. To make $paged
works on single requests or with previous_posts_link()
, you can try:
global $paged;
$paged = $paged ? $paged : get_query_var( 'page' );
$args = array(
'posts_per_page' => 6,
'paged' => $paged,
);
For example, product is IOS and categories are iPhone and iMac,iPod. So I have to display iPhone and iMac only.
So after discussing via chat (to get more details about the above), you can use the following if you want to display the name of the first two of the categories: (which could actually be just one)
$names = array();
$categories = get_the_category();
//shuffle( $categories ); // uncomment if you want random entries
foreach ( $categories as $i => $term ) {
if ( $i < 2 ) { // show at most two
$names[] = '<a href="' . esc_url( get_category_link( $term->term_id ) ) . '">' . $term->name . '</a>';
}
}
$names = implode( ', ', $names );
And that would replace the $categories = get_the_category(); $names = ''; if ( $categories && is_array( $categories )) { foreach ( $categories as $cat ) { $names .= $cat->name . ' '; } }
.
See here for more details about get_category_link()
.
Additional Notes
You should call wp_reset_postdata()
after your custom loop ends: while ( ... ) { ... } wp_reset_postdata();
. Or after the have_posts()
block ends: if ( $tyler_query->have_posts() ) { ... } wp_reset_postdata();
.
Doing that would restore the global $post
variable to the current post in the main query (contained in the global $wp_query
variable as opposed to your $tyler_query
variable). And this restoration is necessary in order for template tags like the_title()
to work in terms of referencing to the current post in the main query.
本文标签: pluginsNext and Previous Pagination button not displaying in WordPress
版权声明:本文标题:plugins - Next and Previous Pagination button not displaying in WordPress 内容由网友自发贡献,该文观点仅代表作者本人, 转载请联系作者并注明出处:http://www.betaflare.com/web/1745035025a2638731.html, 本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容,一经查实,本站将立刻删除。
发表评论