如何删除插件过滤器在特定循环(自定义查询)上的优先级?

时间:2012-02-01 作者:Chad Dunbar

所以我有一个评论插件,可以根据评分自动对我的所有网站进行排序。以下是插件在全球范围内应用的过滤器:

    //Post sorting
    $sort = get_option(\'rs_sort\');
    if ($sort == \'rating\') {

        add_filter(\'posts_fields\', \'rs_weighted_fields\');
        add_filter(\'posts_join\', \'rs_weighted_join\');
        add_filter(\'posts_groupby\', \'rs_weighted_groupby\');
        add_filter(\'posts_orderby\', \'rs_weighted_orderby\');

    } else if ($sort == \'comments\') {
        add_filter(\'posts_orderby\', \'rs_comments_orderby\');
    }

}
这些过滤器优先于整个站点。甚至一些我希望使用wordpress默认值(按最新值排序)的自定义循环,以及其他我希望按随机值排序的循环。

具体来说,这里有一个我正在尝试的循环示例:

<?php $custom_query = new WP_Query(\'category_name=FreaturedIndex&orderby=rand\'); ?><?php while ($custom_query->have_posts()) : $custom_query->the_post(); ?>
现在,它只是按评级排序,而忽略orderby=rand。是否有一些代码可以通过将其应用于特定查询来删除这些过滤器?

谢谢你的帮助!

1 个回复
最合适的回答,由SO网友:mor7ifer 整理而成

做什么呢remove_filter( \'posts_orderby\', \'rs_weighted_orderby\' );? 如果这不起作用,您可以应用您自己的具有更高优先级的过滤器。。。但这有点像哈奇,如果可能的话,我会尽量避免。

结束

相关推荐

simply loop through posts

我知道这是一个真正的新手问题,但我似乎无法从帖子中获得循环。它所做的只是从页面本身中提取。我制作了一个模板并添加了循环。<?php if( have_posts() ) { while( have_posts() ) { the_post(); ?> <h2><?php the_title(); ?></h2> <?php } } ?>