我在我的Wordpress主题的一个页面模板上遇到了一些麻烦。我希望列出所有帖子,但不包括一个类别(id:4)。
下面我根据the Codex documentation使用了query_posts()
:
<?php get_header(); ?>
<?php while ( have_posts() ) : the_post(); ?>
<header
<?php
if ( has_post_thumbnail()) {
$large_image_url = wp_get_attachment_image_src( get_post_thumbnail_id($post->ID), 'large');
echo 'style="background-image:url(' . $large_image_url[0] . ')"';
}
?>
>
<div class="row">
<div class="page-title small-12 large-8 columns">
<h1>
<a href="<?php the_permalink(); ?>"><?php the_title(); ?></a>
</h1>
</div>
</div>
</header>
<?php get_template_part( 'content', 'headerbanner' ); ?>
<?php endwhile;?>
<section class="container main-content">
<div class="row">
<div id="content" class="small-12 columns">
<?php query_posts($query_string . '&cat=-4'); ?>
<?php if ( have_posts() ) : while ( have_posts() ) : the_post(); ?>
<h2><a href="<?php the_permalink() ?>" rel="bookmark" title="Permanent Link to <?php the_title_attribute(); ?>"><?php the_title(); ?></a></h2>
<?php the_content(); ?>
<?php endwhile; else: ?>
<p>Sorry, no posts matched your criteria.</p>
<?php endif; ?>
</div>
</div>
</section>
<?php get_footer(); ?>
问题是这不会返回帖子列表。相反,它只返回页面本身的详细信息(在本例中称为“博客”)。
答案 0 :(得分:1)
将#content
内部的代码修改为以下内容解决了这个问题:
<?php query_posts('cat=-4'); ?>
<?php while ($wp_query->have_posts()) : $wp_query->the_post(); ?>
<?php get_template_part( 'content', get_post_format() ); ?>
<?php endwhile; ?>
答案 1 :(得分:0)
这里你需要传递post_type
query_posts($query_string . '&cat=-4&post_type=post');