Wordpress类别过滤器无法正常工作

时间:2017-08-28 13:56:22

标签: php wordpress

我完全不确定我是否只是失明但是还没有100%习惯使用wordpress,并希望得到一些帮助。

我的博客帖子页面显示了所有博客帖子,它也在侧栏中有类别但是当选择了一个类别时,它会使用/ categories / events更改URI,但不会将帖子内容限制为应该包含的内容类别?

<?php get_header(); ?>

<div class="container posts">
  <div class="row">
    <div class="col-xs-8 col-md-8">
      <?php
        $args = array (
          'post-type' => 'post'
        );

        $post_query = new WP_Query($args);
        if ($post_query->have_posts())
          while ($post_query->have_posts()) {
            $post_query->the_post();
      ?>
      <div class="post">
        <?php
          the_post_thumbnail( 'large' );  
          echo '<a href="' . get_permalink() . '">';
          the_title('<h2>', '</h2>');
          echo '</a>';
          the_excerpt();
          echo do_shortcode( "[icon name='fa-calendar-o']" ) . " ";
          the_date("d F");
        ?>
      </div>
      <?php
          }
      ?>
    </div>
    <div class="col-xs-4 col-md-4">
      <?php get_sidebar(); ?>
    </div>
  </div>
</div>

有什么想法吗?这是一个完整的自定义WP主题,从头到尾所以我可能会遗漏一些非常简单的东西,如果有人知道那是什么我会非常感激。

1 个答案:

答案 0 :(得分:0)

在加载index.php页面之前,WordPress会根据页面网址/参数为您设置WP_Query对象。所以在主要博客帖子页面上,它将是一个查找所有帖子的查询;在Foo类别页面上,它将是查找Foo类别中所有帖子的查询。

在您现有的代码中,您忽略了预先设置的查询对象并创建了一个新的查询对象$post_query,它总是只抓取所有帖子。这就是为什么在查看类别时结果不会改变的原因。

您应该转储特殊创建的$post_query对象,并使用基本的WordPress“The Loop”代码:

    if (have_posts())
      while (have_posts()) {
        the_post();
        ...

这将使用WordPress为您设置的WP_Query对象。通常情况下,除非您做一些与众不同的事情,否则不会创建自己的WP_Query对象。