是否从主查询中排除粘滞帖子?

时间:2012-12-02 作者:Steven

我在这方面有很多麻烦。我在使用<?php query_posts( array( \'post__not_in\' => get_option( \'sticky_posts\' ), \'paged\' => get_query_var( \'paged\' ) ) ); ?> 从我的主页上的主查询中排除帖子,因为滑块中使用了胶粘物。我正在为wordpress制作这个主题。org和我被告知不推荐这样做。然后我尝试将其添加到我的函数中。php但无济于事:

/**
 * Excluding sticky posts from home page. Sticky posts are in a slider.
 *
 * @since 0.1
 */
function essential_exclude_sticky( $query ) {

    /* Exclude if is home and is main query. */
    if ( is_home() && $query->is_main_query() )
        $query->set( \'ignore_sticky_posts\', true );

}
`

你知道我做错了什么吗?

2 个回复
SO网友:chrisguitarguy

query_posts 不推荐,因为breaks things.

很接近了,但是仅仅声明函数本身是行不通的。你需要hook 将功能转化为某物。在你的情况下pre_get_posts.

示例(使用“namespaced”函数):

<?php
// this is key!
add_action(\'pre_get_posts\', \'wpse74620_ignore_sticky\');
// the function that does the work
function wpse74620_ignore_sticky($query)
{
    // sure we\'re were we want to be.
    if (is_home() && $query->is_main_query())
        $query->set(\'ignore_sticky_posts\', true);
}

SO网友:Nelu

对我来说,使用ignore_sticky_posts 阻止粘性帖子显示在顶部,但它们仍按时间顺序与其他帖子一起显示。

我正在使用post__not_in 具有get_option(\'sticky_posts\') 从主查询中排除粘性帖子。

<?php
/**
 * Exclude sticky posts from home page.
 */
function theme_name_ignore_sticky_posts($query){
  if (is_home() && $query->is_main_query())
    $query->set(\'post__not_in\', get_option(\'sticky_posts\'));
}
add_action(\'pre_get_posts\', \'theme_name_ignore_sticky_posts\');
?>

结束

相关推荐