是否有条件地将帖子从主页侧边栏的特定类别中排除?

时间:2012-03-06 作者:user4490

我想从一个类别中排除帖子。只有在我明确不希望显示特定帖子的情况下,这些帖子才不应该显示在主页的侧边栏中。在所有其他情况下,将显示这些帖子。

我试过使用插件“WP Hide Post”,但这似乎不适用于侧栏,只适用于常规循环。我已经检查了从主页隐藏这篇文章,但什么也没发生。

这是我用来在主页侧边栏中显示帖子的代码:

<?php query_posts(\'category_name=events&showposts=3\'); ?>
<?php while (have_posts()) : the_post(); ?>
<h2 id="post-<?php the_ID(); ?>">
<a href="<?php the_permalink() ?>" rel="bookmark" accesskey="s"><?php the_title(); ?></a>
</h2>
<div class="myclass3"><?php wpe_excerpt(\'wpe_excerptlength_index\', \'wpe_excerptmore\'); ?>                        </div><BR>
<?php endwhile; ?>

2 个回复
SO网友:Brad Dalton

您可以将此代码添加到名为wpsites的新文件中。然后在任何文件中直接使用模板标记,或者使用具有特定主题或WordPress挂钩的自定义函数将其挂钩。

Note: 所有代码都可以在子主题中使用。

<?php 

// Your Custom Query Arguments
$args = array(
\'category__not_in\' => array( 007 ) 
) );

$wpsites_catposts = new WP_Query( $args ); 

// Your Custom Loop
if ( $wpsites_catposts->have_posts() ) {

    echo \'<div class="primary-sidebar"><ul>\';

while ( $wpsites_catposts->have_posts() ) {

    $wpsites_catposts->the_post();

    echo \'<li><a href="\' . esc_url( get_permalink() ) . \'" rel="bookmark">\' . get_the_title() . \'</a></li>\';
}
    echo \'</ul></div>\';
} else {
  echo \'<div class="primary-sidebar">No posts found for this query.</div>\';
}   

wp_reset_postdata();

Get Template Part

在任何模板文件中添加此代码。对于这个问题,您的一个侧边栏。php文件。

<?php get_template_part( \'wpsites\' ); ?>

Custom Function

或者,如果你的主题包括动作挂钩,就把它挂起来:

add_action ( \'your_themes_before_sidebar_hook\', \'exclude_posts_in_sidebar_loop\' );
function exclude_posts_in_sidebar_loop() {
if ( is_home() ) {
get_template_part( \'wpsites\' ); 
}}
更改上述自定义函数中的条件标记以满足您自己的需要。

Alternative Method For Query

不使用$args数组,您可以用以下行替换自定义查询参数:

$wpsites_catposts = new WP_Query( array( 
\'category__not_in\' => array( 007 ) 
) );

SO网友:Chris_

我不确定这是否是您想要的,但您可以用

<?php if(! in_category( array( [category_id] ) )) ?>

   ....your code here to display the rest of the categories.....

<?php endif; ?>
只需将[category\\u id]替换为您要排除的类别

结束

相关推荐

Trim posts from WP-Query?

我希望在我的首页上显示一些由以下标准确定的帖子:显示当月的所有帖子(实际上是从最近帖子对应的月份开始);但是如果这个数字少于(比如)8,那么就显示最近的8篇帖子。假设我知道每个月都不会有超过(比如)20篇文章,我会将posts\\u per\\u page设置为20,通常抓取最近的20篇文章,然后在php中进行适当的修剪(切片)。(在SQL中这样做似乎太复杂了)顺便说一句:起初我以为add_filter( \'posts_results\', ... ) 这很合适,但很难区分查询是与主循环相对应,还是与其