自定义类别代码未显示所有帖子

时间:2016-05-12 作者:DTR

我有一个PHP模板,我正在应用于我网站上的几个页面,以便它们显示一个类别中与页面同名的所有帖子的列表。然而,这并不正确,因为一个类别(“事件”)的帖子根本不会显示在其页面上,而另一个类别(“结果”)的帖子只会显示在其页面上,尽管每个类别中都有多个帖子。

我已经检查了类别和页面名称是否相同(即使帖子只有一个类别),所以这不是问题所在。然而,通过阅读代码,我看不到明显的错误。

我正在使用模板文件中的以下代码:

<?php /*
Template Name: List-all-posts-in-category
*/ ?>

<?php get_header(); ?>
<div id="main">
    <?php get_sidebar(); ?>
    <div id="content">
        <div id="content-post"> 
            <?php if ( have_posts() ) : while ( have_posts() ) : the_post(); ?>
                <div id="content-post-title">
                    <h1><?php the_title(); ?></h1>
                </div>
                <?php the_content(); ?>
            <?php endwhile; else: endif; ?>

            <?php $the_query = new WP_Query( array( \'category_name\' => sanitize_title( get_the_title() ) )  ); ?>
            <?php $yearNumber = \'YEARNOTSET\'; ?>

            <?php if ( $the_query->have_posts() ) : while ( $the_query->have_posts() ) : $the_query->the_post(); ?>
                <?php if ($yearNumber != get_the_date($d = \'Y\')): ?>
                    <?php $yearNumber = get_the_date($d = \'Y\'); ?>
                    <div id="content-category-post-date">
                        <h1><?php the_date($d = \'Y\'); ?></h1>
                    </div>
                <?php endif; ?>
                <div id="content-category-post-title">
                    <h2><a href="<?php the_permalink(); ?>"><?php the_title(); ?></a></h2>
                </div>
            <?php endwhile; else: endif; ?>
        </div>
    </div>
</div>
<div id="delimiter">
</div>
<?php get_footer(); ?>
你知道是什么导致了这个问题吗?

提前谢谢。

1 个回复
SO网友:Howdy_McGee

首先,确保类别与页面的名称完全相同(slug和all)。其次,要传递给的参数WP_Query 不正确。

  • category_name expects a slug. 例如Page 1 会有一点page-1.
  • get_the_title() 拉取当前页面标题-因此您正在通过Page 1 到需要一个slug的参数page-1.sanitize_title( get_the_title() ) 或者最好你可以申报global $post 在您的文档顶部,然后通过$post->post_name.