上周,我一直在尝试创建一个带有分页的自定义类别页面。我已经尝试了很多方法,但我无法正确分页。如果你们中有人能帮忙的话。
我实际上想做的是在我的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(); ?>
最合适的回答,由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(); ?>