我正在尝试从循环中排除POST FORMAT(图库)。我能够成功地显示帖子格式而其他帖子没有使用类似的tax_query
但是当我尝试使用tax_query
'operator' => 'NOT IN'
排除帖子格式时,它会排除该帖子格式,但是然后它无休止地重复并循环所有其他帖子。我不确定我在这里做错了什么。我只希望每个帖子都显示一次,但不是那些带有post-format-gallery的帖子。
只有成功运作的帖子格式的页面:
<?php
get_header(); ?>
<div class="site-content clearfix">
<?php if (is_active_sidebar('sidebar1')) : ?>
<div class="main-column">
<?php endif; ?>
<?php if (have_posts()) :
while (have_posts()) : the_post(); ?>
<article class="page">
<h2><?php the_title(); ?></h2>
<?php $args = array(
'post_type'=> 'post',
'post_status' => 'publish',
'order' => 'ASC',
'tax_query' => array(
array(
'taxonomy' => 'post_format',
'field' => 'slug',
'terms' => array( 'post-format-gallery' )
)
)
);
$galleryPosts = new WP_Query ( $args );
if ($galleryPosts->have_posts()) :
while ($galleryPosts->have_posts()) : $galleryPosts->the_post(); ?>
<div class="page portfolio">
<?php the_post_thumbnail(); ?>
<h3><a href="<?php the_permalink(); ?>"><?php the_title(); ?></a></h3>
<?php the_excerpt(); ?>
</div>
<?php endwhile;
else :
endif;
wp_reset_postdata();
?>
</article>
<?php endwhile;
else :
echo '<p>No content found</p>';
endif; ?>
<?php if (is_active_sidebar('sidebar1')) : ?>
</div>
<?php endif; ?>
<?php get_sidebar(); ?>
</div>
<?php get_footer();
?>
使用类似的代码,尝试排除帖子格式有效,但随后循环并重复所有其他帖子:
<article class="post">
<?php $args = array(
'post_type'=> 'post',
'post_status' => 'publish',
'order' => 'DESC',
'tax_query' => array(
array(
'taxonomy' => 'post_format',
'field' => 'slug',
'terms' => array( 'post-format-gallery' ),
'operator' => 'NOT IN',
)
)
);
$noGalleryPosts = new WP_Query ( $args );
if($noGalleryPosts->have_posts()) :
while($noGalleryPosts->have_posts()) : $noGalleryPosts->the_post();
?>
<h2><a href="<?php the_permalink(); ?>"><?php the_title(); ?></a></h2>
<p class="post-info"><?php the_time('F jS, Y'); ?>
| by
<a href="<?php echo get_author_posts_url(get_the_author_meta('ID')); ?>"><?php the_author(); ?></a>
| Posted in
<?php
$categories = get_the_category();
$separator = ", ";
$output = '';
if ($categories){
foreach ($categories as $category) {
$output .= '<a href="' . get_category_link($category->term_id) . '">' . $category->cat_name . '</a>' . $separator;
}
echo trim($output, $separator);
}
?></p>
<?php if (!is_single() ) { ?>
<P>
<?php echo get_the_excerpt(); ?>
<a href="<?php the_permalink(); ?>">Read more»</a>
</p>
<?php } elseif (is_single() ) {
the_post_thumbnail('banner-image');
the_content();
} else {
the_content();
} ?>
<?php endwhile;
else :
endif;
wp_reset_postdata();
?>
</article>
答案 0 :(得分:0)
解决了它。重复所有博客帖子的页面位于content.php
index.php
正在链接的页面上。我在索引上有一个循环,内容在里面,所以它试图一遍又一遍地运行它。
解决方案:从index.php
移除循环,并使content.php
保持不变。
index.php
文件更改为以下内容并从content.php
中取出循环
<?php
get_header(); ?>
<div class="site-content clearfix">
<?php if (is_active_sidebar('sidebar1')) : ?>
<div class="main-column">
<?php endif; ?>
<?php if (have_posts()) :
$args = array(
'tax_query' => array(
array(
'taxonomy' => 'post_format',
'field' => 'slug',
'terms' => 'post-format-gallery',
'operator' => 'NOT IN'
)
)
);
query_posts( $args );
while (have_posts()) : the_post();
get_template_part('content', get_post_format());
endwhile;
else :
echo '<p>No content found</p>';
endif; ?>
<?php if (is_active_sidebar('sidebar1')) : ?>
</div>
<?php endif; ?>
<?php get_sidebar(); ?>
</div>
<?php get_footer();
?>
目前这解决了我的问题。