特定の投稿タイプで、where句をカスタマイズしたところ、カスタムフィールドや投稿一覧など(だったはず)に、すべての投稿が表示されてしまった。
コードです。
/**
* カスタム投稿タイプ、絞込検索でwhere句をカスタマイズ
*/
function custom_search_where($where) {
if ($_REQUEST['post_type'] !== '*カスタム投稿タイプ名*' || is_admin()) {
// return; // => バグの原因
return $where;
}
// いろいろ処理
return $where;
}
add_filter('posts_where', 'custom_search_where');
\$_REQUESTで条件分岐しているのが良くない気もしますが、$whereを返さないことで、画像なども含めて、全てが表示されてしまっていました。
その他、posts_search
、posts_join
についても、returnするときは引数を返す必要がありました。