何时将_Filter()添加到自定义查询

时间:2013-11-25 作者:Howdy_McGee

我有一个复杂的查询,需要连接多个表。我是通过add_filter(\'posts_join\') - 我的问题是,何时何地添加过滤器,使其仅适用于自定义查询?

我的自定义查询

$test = new WP_Query(array(\'post_type\' => \'artcpt\', \'posts_per_page\' => 10, \'tax_query\' => array(array(\'taxonomy\' => \'arttax\', \'field\' => \'id\', \'terms\' => array(20,41,16)))));
我应该在查询上方还是之后实际添加过滤器?我是否需要将它放在一个单独的文件(function.php)中,然后以另一种方式附加它?我需要做点什么吗query_vars?

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

要在创建查询之前添加筛选器:

add_filter( \'posts_join\', \'custom_posts_join\' );
$test = new WP_Query( $args );
您可以在主题文件中定义过滤器回调,例如
functions.php 或在插件中:

function custom_posts_join( $join )
{
    // modifications
    // $join = ...

    // remove the filter 
    remove_filter( current_filter(), __FUNCTION__ );

    // return the result    
    return $join;

}
请注意,我们使用以下行删除过滤器:

    remove_filter( current_filter(), __FUNCTION__ );
因此,它不会影响其他查询。

结束

相关推荐

按自定义域(wp-Query和循环)排序和显示帖子)

我只想在主页上显示即将到来的活动帖子。我使用“custom field suite”插件创建了一个自定义字段,名为“ENDS”,表示事件结束的日期。正如你所知,我只想在家里举行即将到来的活动,最接近现在的日期排在第一位。过期后,我希望将其归档到“归档”中,该页面在另一个页面上可见(该页面还应以最近过期的事件开始排序归档的事件帖子)。模板使用无限滚动加载帖子,这是我的索引文件,带有默认循环:http://pastebin.com/x3NzZBZX我需要集成这样的东西,但没有成功:<?php $