WordPress中未显示下一页和上一页按钮

时间:2019-11-02 作者:Naren Verma

我有超过15篇文章,每页仅显示6篇,其余的将在单击分页后显示,但问题是我没有获得分页。

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\' );
第二个问题是,我得到了单个产品的所有类别,我只能显示2个类别。

例如,产品为IOS,类别为iPhone和iMac、iPod。所以我只能显示iPhone和iMac。

1 个回复
最合适的回答,由SO网友:Sally CJ 整理而成

您正在使用自定义查询(new WP_Query), 所以你需要通过$tyler_query->max_num_pages (最大页数)到next_posts_link() 功能(&M);更多详细信息here:

next_posts_link( null, $tyler_query->max_num_pages )
顺便说一句,没必要echo 具有previous_posts_link() 因为函数确实会响应输出。一、 e.只要这样做:<?php previous_posts_link(); ?>.

此外,您应该添加paged 到您的查询参数($args):

$args = array(
    \'posts_per_page\' => 6,
    \'paged\'          => get_query_var( \'paged\' ),
);

$tyler_query = new WP_Query( $args );
但是如果您在单个帖子或页面上使用快捷码,previous_posts_link() 因为它依赖名为$paged 仅为基于存档的请求(如搜索结果)设置。制作$paged 处理单个请求或使用previous_posts_link(), 您可以尝试:

global $paged;
$paged = $paged ? $paged : get_query_var( \'page\' );

$args = array(
    \'posts_per_page\' => 6,
    \'paged\'          => $paged,
);
例如,产品为IOS,类别为iPhone和iMac、iPod。所以我只能显示iPhone和iMac。

因此,在通过聊天讨论之后(为了获得有关上述内容的更多详细信息),如果您想显示前两个类别的名称,可以使用以下内容:(实际上可能只有一个)

$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 );
这将取代$categories = get_the_category(); $names = \'\'; if ( $categories && is_array( $categories )) { foreach ( $categories as $cat ) { $names .= $cat->name . \' \'; } }.

看见here 有关的更多详细信息get_category_link().

其他注释

You should call wp_reset_postdata() 自定义循环结束后:while ( ... ) { ... } wp_reset_postdata();. 或在have_posts() 块端:if ( $tyler_query->have_posts() ) { ... } wp_reset_postdata();.

这样做将恢复全球$post 主查询中当前职位的变量(包含在全局$wp_query 变量,而不是$tyler_query 变量)。对于模板标记,如the_title() 在主查询中引用当前职位。

相关推荐

pagination in WP rest api

我们已经制作了一个自定义API来按降序获取所有帖子,我们希望在该API中添加分页。我已经阅读了其他问题和答案,但没有领会其中的意思。谁能用一个简单的分页代码向我解释一下,这样我就能理解它是如何工作的?以下是我迄今为止所做的代码:define(\'API_ENDPOINT_VERSION\',1); //flush the rewrite rules on plugin activation function apiendpoint_activate() {&#x