가장 간단한 방법은 쿼리 바로 전에 작업을 추가하고 바로 후에 제거하는 것입니다.
add_action('pre_get_posts', 'some_function_in_functionsphp');
$my_secondary_loop = new WP_Query(...);
remove_action('pre_get_posts', 'some_function_in_functionsphp');
if( $my_secondary_loop->have_posts() ):
while( $my_secondary_loop->have_posts() ): $my_secondary_loop->the_post();
//The secondary loop
endwhile;
endif;
wp_reset_postdata();
편집하다
사용할 수있는 또 다른 기술은 자체 쿼리 변수를 설정하고 후크에서 확인하는 것입니다.
// tell WordPress about our new query var
function wpse52480_query_vars( $query_vars ){
$query_vars[] = 'my_special_query';
return $query_vars;
}
add_filter( 'query_vars', 'wpse52480_query_vars' );
// check if our query var is set in any query
function wpse52480_pre_get_posts( $query ){
if( isset( $query->query_vars['my_special_query'] ) )
// do special stuff
return $query;
}
add_action( 'pre_get_posts', 'wpse52480_pre_get_posts' );
그리고 템플릿에서 :
// set the query var (along with whatever others) to trigger the filter
$args = array(
'my_special_query' => true
);
$my_secondary_loop = new WP_Query( $args );