首页 > 解决方案 > 从 the_content() wordpress 中排除一个类别

问题描述

提前感谢您寻找并提供任何帮助,我对此知之甚少。

我试图从 WordPress 循环中排除一个类别,因此发布到该类别的任何内容都不会发布在博客页面上。我尝试在下面添加一个功能

function remove_home_category( $query ) {
 if ( $query->is_home() && $query->is_main_query() ) {
    $query->set( 'cat', '-4' );
   }
 }
add_action( 'pre_get_posts', 'remove_home_category' ); 

我没有建立博客页面,但它看起来很定制,非常感谢任何帮助。这是我在模板中的内容。

<div>
<?php
        get_template_part( 'parts/blog', 'header' );
        get_template_part( 'parts/blog', 'featured' );
        get_template_part( 'parts/blog', 'editor-picks' );

?>
</div>
<div class="container wpc-container" style=" <?php echo ( !empty($hgr_page_top_padding) ? ' padding-top:'.esc_attr($hgr_page_top_padding).'px!important;' : '' ); echo ( !empty($hgr_page_btm_padding) ? ' padding-bottom:'.esc_attr($hgr_page_btm_padding).'px!important;' : '' );?> ">
  <div class="slideContent gu12">
    <?php the_content(); ?>
    <?php if(is_paged()) : ?>
  <?php paginate_comments_links(); ?>
  <?php endif;?>
  <?php comments_template(); ?>
  <?php if(is_paged()) : ?>
  <?php paginate_comments_links(); ?>
  <?php endif;?>

  </div>
</div>

当我删除容器 div 时,所有博客文章都消失了,所以我认为我的类别排除应该放在那里的某个地方?但我不知道在哪里或什么。

标签: wordpress

解决方案


乍一看,我怀疑是$query->is_main_query()你的钩子函数中的条件。true只有当代码在WordPress 主“循环”中运行,并且该模板中不存在主循环的标准代码时,此函数才会返回。

您可以通过从挂钩函数中删除该条件来修复,或者在输出页面内容时重写模板以使用标准循环(从长远来看,这可能是更好的方法,因为 WP 中还有很多其他的东西会无论如何,只能在循环内始终如一地工作)。


推荐阅读