前提・実現したいこと
現在、wordpressで検索結果にカスタムフィールドを含めたいと思いこちらの記事(https://adambalee.com/search-wordpress-by-custom-fields-without-a-plugin/)をもとに作業を行っているのですが、カスタムフィールドだけでなく、カテゴリーやタグ、ユーザー名も含めたいと考えております。
私自身のスキルが低すぎるため解決することができず、wordpressの検索でカスタムフィールド、カテゴリー、タグ、ユーザー名を検索するための知恵をお貸し頂けたら幸いです。
該当のソースコード
/** * Extend WordPress search to include custom fields * http://adambalee.com */ /** * Join posts and postmeta tables * http://codex.wordpress.org/Plugin_API/Filter_Reference/posts_join */ function cf_search_join($join) { global $wpdb; if (is_search()) { $join .=' LEFT JOIN '.$wpdb->postmeta. ' ON '. $wpdb->posts . '.ID = ' . $wpdb->postmeta . '.post_id '; } return $join; } add_filter('posts_join', 'cf_search_join'); /** * Modify the search query with posts_where * http://codex.wordpress.org/Plugin_API/Filter_Reference/posts_where */ function cf_search_where($where) { global $wpdb; if (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_where', 'cf_search_where'); /** * Prevent duplicates * http://codex.wordpress.org/Plugin_API/Filter_Reference/posts_distinct */ function cf_search_distinct($where) { global $wpdb; if (is_search()) { return "DISTINCT"; } return $where; } add_filter('posts_distinct', 'cf_search_distinct');
試したこと
"(".$wpdb->posts.".post_title LIKE $1) OR (".$wpdb->posts.".post_content LIKE $1) OR (".$wpdb->posts.".post_author IN (SELECT distinct ID FROM {$wpdb->users} WHERE display_name LIKE $1) OR (".$wpdb->posts."ID IN (SELECT distinct r.object_id FROM {$wpdb->term_relationships} AS r INNER JOIN {$wpdb->term_taxonomy} AS tt ON r.term_taxonomy_id = tt.term_taxonomy_id INNER JOIN {$wpdb->terms} AS t ON tt.term_id = t.term_id WHERE t.name LIKE $1 ) OR (".$wpdb->posts."t.slug LIKE $1) OR (".$wpdb->posts."tt.description LIKE $1) OR (".$wpdb->postmeta.".meta_value LIKE $1)", $where);
補足情報(FW/ツールのバージョンなど)
wordpress ver 3系
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2021/02/13 02:56