创建带分页的自定义类别页面

时间:2015-07-05 作者:Puni

上周,我一直在尝试创建一个带有分页的自定义类别页面。我已经尝试了很多方法,但我无法正确分页。如果你们中有人能帮忙的话。

我实际上想做的是在我的wordpress主题中,我想创建一个自定义模板,显示与页面名称同名的所有类别。

示例

我创建了一个名为“php”的页面,模板设置为我试图构建的模板。当我点击该页面时,我想显示所有属于“php”类别的帖子。

这里是代码示例。。。

<?php
/**
 * Template Name: Category Temeplate
 *
 */

get_header(); ?>

<div id="primary" class="content-area">
<main id="main" class="site-main" role="main">
<?php
$category = get_post();
$category = $category->post_title;

$query = new WP_Query( array( 
\'category_name\' => $category,
\'order\' => \'asc\',
\'post_type\' => \'post\',
\'post_status\' => \'publish\',
));
?>
<?php 
if ($query->have_posts()) {
   while ($query->have_posts()) : $query->the_post(); ?>

<article id="post-<?php the_ID(); ?>"
<header class="entry-header">
<?php the_title( sprintf( \'<h2 class="entry-title"><a href="%s" rel="bookmark">\', esc_url( get_permalink() ) ), \'</a></h2>\' ); ?>
</header><!-- .entry-header -->

<div class="entry-content">
<?php 
the_content();
?>
</div><!-- .entry-content -->
</article><!-- #post-## --><hr>

<?php endwhile; ?>
<?php the_paging_nav(); ?>
<?php
}
?>

</main><!-- #main -->
</div><!-- #primary -->

<?php get_footer(); ?>

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

你有一些问题

以下代码是错误的,没有必要

$category = get_post();
$category = $category->post_title;
当前页面对象保存在get_queried_object(), 因此,您可以使用此函数获取您的帖子标题。而且post_title 不是此处要使用的正确属性。您想查看保存在post_name 所有物这个category_name 参数超出类别slug, 不是name. 这个category_name 在我看来,参数的名称是错误的。这就像给一个女孩起一个男孩的名字,然后期望其他人知道这个人是一个基于名字的女孩。

这里有点偏离主题,但不要混淆语法。选择一种语法,并坚持使用它。因为卷曲最容易调试,并且主要受代码编辑器支持,所以请使用它们。此外,适当地缩进代码,更易于阅读和调试

在使用之前,您需要实际设置分页。为此,您需要使用paged 参数我不打算深入讨论这个问题,因为这个网站已经处理了很多次了。

  • the_paging_nav() 不是核心函数,因此您需要联系代码的作者以了解如何将代码用于自定义查询

    类似以下的操作应该可以

    <?php
    /**
     * Template Name: Category Temeplate
     *
     */
    
    get_header(); ?>
    
    <div id="primary" class="content-area">
        <main id="main" class="site-main" role="main">
    
            <?php
            $current_page = get_queried_object();
            $category     = $current_page->post_name;
    
            $paged = get_query_var( \'paged\' ) ? get_query_var( \'paged\' ) : 1;
            $query = new WP_Query( 
                array(
                    \'paged\'         => $paged, 
                    \'category_name\' => $category,
                    \'order\'         => \'asc\',
                    \'post_type\'     => \'post\',
                    \'post_status\'   => \'publish\',
                )
            );
    
            if ($query->have_posts()) {
                   while ($query->have_posts()) { 
                   $query->the_post(); ?>
    
                    <article id="post-<?php the_ID(); ?>">
                        <header class="entry-header">
                            <?php the_title( sprintf( \'<h2 class="entry-title"><a href="%s" rel="bookmark">\', esc_url( get_permalink() ) ), \'</a></h2>\' ); ?>
                        </header><!-- .entry-header -->
    
                        <div class="entry-content">
                            <?php the_content(); ?>
                        </div><!-- .entry-content -->
                    </article><!-- #post-## --><hr>
    
                    <?php
                }
    
                // next_posts_link() usage with max_num_pages
                next_posts_link( \'Older Entries\', $query->max_num_pages );
                previous_posts_link( \'Newer Entries\' );
    
                wp_reset_postdata();
            }
            ?>
    
        </main><!-- #main -->
    </div><!-- #primary -->
    
    <?php get_footer(); ?>
    

  • 结束

    相关推荐

    Pagination issue

    我正在使用一个自定义帖子类型/自定义分类组合,我似乎无法使分页正常工作。我想在页面上添加一个无限卷轴,但我甚至无法显示分页以使无限卷轴工作。下面是我的循环:<?php $paged = (get_query_var(\'paged\')) ? get_query_var(\'paged\') : 1; $args = array( \'post_type\' => \'shows\', // it\'s defa