カスタムフィールドを検索対象にした場合、記事が無限ループしてしまう
-
http://notnil-creative.com/blog/archives/1638
こちらのサイトを参考にfunctions.phpに
function my_search_join( $join, $query ) { if ( is_admin() || ! $query->is_main_query() ) return $join; global $wpdb; if( $query->is_search() ) { $join .= " LEFT JOIN $wpdb->postmeta ON " . "$wpdb->posts.ID = $wpdb->postmeta.post_id "; } return $join; } function my_search_where( $where, $query ) { if ( is_admin() || ! $query->is_main_query() ) return $where; global $wpdb; if ( $query->is_search() ) { $where = preg_replace( "/\(\s*$wpdb->posts\.post_title\s+LIKE\s*(\'[^\']+\')\s*\)/", "($wpdb->posts.post_title LIKE $1) OR ($wpdb->postmeta.meta_value LIKE $1)", $where ); } return $where; } add_filter( 'posts_join', 'my_search_join', 10, 2 ); add_filter( 'posts_where', 'my_search_where', 10, 2 );
と記述し既存のサーチフォームからカスタムフィールドの値も検索対象に含めさせることができたのですが、掲載サイトにもある通りカスタムフィールド以外の値でヒットさせたときに該当記事が無限ループし困っています。
色々と調べてみたのですが原因がわからず、こちらで質問させていただきたく思います。
search everythingなどのプラグインもありますが、動作状況が良くないのとなるべくプラグインに依存させない形で実現させたく思っています。
5件の返信を表示中 - 1 - 5件目 (全5件中)
5件の返信を表示中 - 1 - 5件目 (全5件中)
- トピック「カスタムフィールドを検索対象にした場合、記事が無限ループしてしまう」には新たに返信することはできません。