WPのquery中のmeta_queryを、pre_get_postsフックでfilterする方法
例えば、ログインしていないユーザーのみの、works投稿タイプでkey=works_disclose, value=on のもののみ表示する
function your_customized_filter($query) {
if(!is_user_logged_in() && $query->get('post_type') == 'works' ) {
$meta_query = $query->get('meta_query');
if( empty( $meta_query ) ){
$meta_query = array();
}
else
$meta_query['relation'] = 'AND';
$meta_query[] = array(
'key' => 'works_disclose',
'value' => 'on'
);
$query->set( 'meta_query', $meta_query );
return $query;
}
}
add_filter('pre_get_posts', 'your_customized_filter');
フックを使うと、うっかりfilterし忘れが防止できるので、有効に使いたい。
