从搜索和存档页面中排除未分类的帖子

时间:2015-12-15 15:28:39

标签: wordpress

在我的Wordpress网站中,我想阻止任何未分类的帖子显示在网站搜索和存档页面中 - 包括最近帖子的首页。

我希望未分类的帖子可见的唯一地方是实际帖子本身,以及作者存档页面,例如example.com/author/authorName

我看了一个插件是徒劳的。我估计必须有一些自定义的PHP,但我的技能并不是那么深。

任何帮助或线索都非常感谢!

1 个答案:

答案 0 :(得分:1)

您必须在archive.phpindex.php的循环中排除该类别。此示例使用类别ID编号,您可以通过转到帖子>>找到这些编号。分类即可。您将看到每个类别的ID。

在上面提到的文件中,找到循环

<?php $query = new WP_Query( 'cat=-1' ); ?> // This is where you exclude. You can comma separate multiple categories : 'cat=-1,-2,-3' etc
 <?php if ( $query->have_posts() ) : while ( $query->have_posts() ) : $query->the_post(); ?>

 <div class="post">

 <!-- Here is the post content - use whatever your theme is using -->

 </div> 

 <?php endwhile; 
 wp_reset_postdata();
 else : ?>
 <p><?php _e( 'Sorry, no posts matched your criteria.' ); ?></p>
 <?php endif; ?>

至于搜索结果,试试这个。这将进入functions.php(我没有测试过,所以如果有问题请告诉我。)

add_filter( 'pre_get_posts' , 'search_exclude' );
function search_exclude( $query ) {

if( $query->is_admin )
return $query;

if( $query->is_search ) {
$query->set( 'category__not_in' , array( 1 ) ); // Category ID
}
return $query;
}

请注意:您也可以通过逗号分隔这里的类别:

$query->set( 'category__not_in' , array( 1,2,3 ) );