【问题标题】:Lost pagination after using WP_Query for custom category query in Wordpress在 Wordpress 中使用 WP_Query 进行自定义类别查询后丢失分页
【发布时间】:2015-04-19 00:57:17
【问题描述】:

在 Wordpress 中构建我的第一个自定义主题,然后我进行了自定义查询以仅在自定义类别页面上显示一个类别

使用:$cat_posts = new WP_Query("category_name=deep-thoughts-page");

我不再有分页。我的查询非常适合为我的贴有“深度思考页面”类别的帖子创建自定义类别页面,它也可以在其他任何地方完美运行。

我理解这个查询,我喜欢这个查询,而且它有效,我只需要我的分页返回。

注意:我正在使用 wp-admin 面板来限制每页的帖子数量(这适用于我的查询),但我仍然失去了分页。

请帮忙:)

【问题讨论】:

标签: php mysql pagination wordpress


【解决方案1】:

我认为您在 wp_query 而不是类别名称中定义了错误,您应该在其上应用类别 ID。那么它将为您工作,并将分页应用于类别页面。

请参阅下面它将为您使用的代码。 $query = new WP_Query( 'cat=1,2,3,4,5&posts_per_category=5' );

【讨论】:

    【解决方案2】:

    这对你有用吗?

    $paged = (get_query_var('paged')) ? get_query_var('paged') : 1;
    $cat_posts->query( 'showposts=10&category_name=deep-thoughts-page&paged='.$paged );
    

    在你的页面实现中,如果你需要重建分页,你可以这样做:

    <?php
    while ($cat_posts->have_posts()) : $cat_posts->the_post();
    
        // display the posts...
    
    endwhile;
    
    // Now rebuild the pagination
    ?>
    
    <?php if ($cat_posts->max_num_pages > 1) : ?>
        <div class="pager">
    
            <?php if ($paged > 1) : ?>
                <a href="<?php echo get_category_link($category_id).'page/1'; ?>">Previous</a>
            <?php endif; ?>
    
            <?php for ($i=1; $i<=$cat_posts->max_num_pages; $i++) : ?>
                <a href="<?php echo get_category_link($category_id).'page/'.$i;?>" <?php echo ($paged==$i)? 'class="active"':'';?>><?php echo $i;?></a>
            <?php endfor; ?>
    
            <?php if ($paged != $cat_posts->max_num_pages) : ?>
                <a href="<?php echo get_category_link($category_id).'page/'.$i; ?>">Next</a>
            <?php endif; ?>
        </div>
    <?php endif; ?>
    

    【讨论】:

    • 我认为这个“分页”部分是关键。
    【解决方案3】:

    嘿,使用下面的代码,您可以轻松创建分页。

    if ( !function_exists( 'matword_pagination' ) ) :
    /**
    * Add number paggination
    **/
    function matword_pagination() {
    
        $prev_arrow = is_rtl() ? '&rarr;' : '&larr;';
        $next_arrow = is_rtl() ? '&larr;' : '&rarr;';
    
        global $wp_query;
        $total = $wp_query->max_num_pages;
        $big = 999999999; // need an unlikely integer
        if( $total > 1 )  {
             if( !$current_page = get_query_var('paged') )
                 $current_page = 1;
             if( get_option('permalink_structure') ) {
                 $format = 'page/%#%/';
             } else {
                 $format = "&paged=%#%";
             }
            echo paginate_links(array(
                'base'          => htmlspecialchars_decode(  str_replace( $big, '%#%', esc_url( get_pagenum_link( $big ) ) ) ),
                'format'        => $format,
                'current'       => max( 1, get_query_var('paged') ),
                'total'         => $total,
                'mid_size'      => 3,
                'type'          => 'list',
                'prev_text'     => $prev_arrow,
                'next_text'     => $next_arrow,
             ) );
        }
    }
    endif;
    

    只需将此代码添加到functions.php文件中,然后在要显示分页的地方调用“matword_pagination()”函数。

    更多详情请阅读this article.

    【讨论】:

      猜你喜欢
      • 2013-09-29
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-11-05
      • 2017-04-16
      • 2014-02-14
      • 1970-01-01
      相关资源
      最近更新 更多