我可以对最新的帖子页面隐藏特定的帖子吗?

时间:2013-04-02 作者:Renato Lochetti

假设我有一篇文章,我只想在它所属类别的页面上显示。问题是,这篇文章也可以在最新的文章页面中看到。

有没有办法在最新的帖子页面中隐藏此帖子,并仅在帖子类别的页面中显示?

3 个回复
SO网友:Brad Dalton
function exclude_single_posts_home($query) {
  if ($query->is_home() && $query->is_main_query() && !is_admin()) {
    $query->set(\'post__not_in\', array(post-id));
  }
}

add_action(\'pre_get_posts\', \'exclude_single_posts_home\');

Source: pre_get_posts

SO网友:mrwweb

既然您使用的是核心的“帖子页面”设置,那么您应该能够使用pre_get_posts action 删除要排除的特定ID。

这应该适用于您的functions.php 文件或/mu-plugins/ 插件:

wpse94273_hide_post( $query ) {
    // only remove post ID from page_for_posts and in the main query
    if( $query->is_home() && $query->is_main_query() ) {
        // remove specific page ID from query
        query->set( \'post__not_in\', array( {your post id} ) );
    }
}
add_action( \'pre_get_posts\', \'wpse_94273_hide_post\' );
将“{your post id}”替换为要排除的帖子的id。这是一个array, 因此,如果需要,可以输入多个以逗号分隔的ID。

如果post ID发生更改,则需要使用设置API设置某种选项来存储要排除的ID。

SO网友:Sagive

你的问题很难理解。。你是说一篇特定的帖子还是什么自动的?如果您指的是一篇特定的文章,并且如果您使用wp\\u query/query posts循环查找最近的文章,则可以添加此参数。

\'post__not_in\' => array($postId)

Example query:

$relatedargs = array(
    \'post__not_in\'      => array($postId) // THIS IS THE LINE
);
$the_query = new WP_Query( $relatedargs );

// The Loop
if( $the_query->have_posts() ) {
while ( $the_query->have_posts() ) : $the_query->the_post();

// YOUR LOOP HERE

endwhile; 
}
希望这有帮助;

结束

相关推荐

Blog posts not displaying

在我的Wordpress网站的第一个页面上,我总是可以看到我的帖子,但是当我导航到我的“博客”页面并附上我的博客模板时,我无法在这里显示我的帖子。我使用wordpress函数在第一页上回显当前页面模板,它正在获取索引。php模板。我的博客页面正在获取博客模板。我已经复制并粘贴了代码<?php if ( have_posts() ) : while ( have_posts() ) : the_post(); ?> <h2><a href=\"<?php