我的首选项是一个特殊的查询变量,用作触发过滤器的标志:
function wpse_228386_maybe_batman( $clauses, $wp_query ) {
if ( $wp_query->get( \'iamthebatman\' ) ) {
// Fight crime
}
return $clauses;
}
add_filter( \'posts_clauses\', \'wpse_228386_maybe_batman\', 10, 2 );
现在,您可以在任何地方“激活”它,而无需每次添加/删除过滤器:
$query = new WP_Query([ \'iamthebatman\' => true ]);
只要确保您选择的任何查询变量都是特定于您的项目的,并且不会与
WordPress reserved terms.