コンテンツへスキップ
静岡の情シス顧問|日紫喜 隆(RYU)〜現場に寄り添い、ITで会社を強くする〜
ITコスト削減・業務改善・情シス内製化・Salesforce上流支援まで、中小企業のITを伴走支援します。
  • ホーム
  • 支援内容
  • 実績・プロフィール
  • 料金・お問い合わせ
  • ホーム
  • 支援内容
  • 実績
  • 相談する

【WordPress】posts_searchフィルターフックで検索フォームの検索対象拡張方法

Wordpressロゴ WordPress
X Facebook はてブ Pinterest LinkedIn
2022.06.122023.07.26
この記事は約3分で読めます。

WordPressの検索は、デフォルトの検索対象が件名と本文のみです。

検索対象を拡張できるプラグインもあるにはあるのですが、更新されていないものが多く、実際に入れたらエラーが出ることがしばしばだったので自力実装してみました。

今回、タグ名・カテゴリ名・カスタムフィールドも検索対象に加えたいことがありましたので、そのやり方をご紹介します。

  1. 実際に書いたコード
  2. コードの解説

実際に書いたコード

function.phpなどに以下のコードを追加すれば検索対象が増えます。

add_filter('posts_search',function($search, $wp_query) {
	global $wpdb;
	//検索ページ以外だったら終了
	if (!$wp_query->is_search)
		return $search;

	if (!isset($wp_query->query_vars))
		return $search;

	$search_words = explode(' ', isset($wp_query->query_vars['s']) ? $wp_query->query_vars['s'] : '');
	if ( count($search_words) > 0 ) {
		$search = '';
		foreach ( $search_words as $word ) {
			if ( !empty($word) ) {
				$search_word = $wpdb->escape("%{$word}%");
				$search .= " AND (
						{$wpdb->posts}.post_title LIKE '{$search_word}'
						OR {$wpdb->posts}.post_content LIKE '{$search_word}'
						OR EXISTS (
							SELECT 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 r.object_id = {$wpdb->posts}.ID AND 
							(t.name LIKE '{$search_word}'
						OR t.slug LIKE '{$search_word}'
						OR tt.description LIKE '{$search_word}')
						)
						OR EXISTS (
							SELECT p.post_id
							FROM {$wpdb->postmeta} AS p
							WHERE p.post_id = {$wpdb->posts}.ID AND p.meta_value LIKE '{$search_word}'
						)
				) ";
			}
		}
	}
	return $search;
}, 10, 2);

コードの解説

まず、検索を拡張するには、add_filterの’posts_search’を使います。

管理画面の検索にも及んでしまうため、「$wp_query->is_search」以外では、処理しないようにします。

「$search」のクエリにterm(カテゴリー・タグ)やpostmetaの条件を追加すれば拡張ができます。

OR検索については、検索語を分割すればできますが、SQL文を加工する所が結構大変なので効果があるかどうか判断してから実装した方が良いです。

この記事を書いた人
サイト運営者
RYU
RYU

静岡の情シス顧問|情シス出身→大手システム会社→独立|
企業のITコスト・契約・情シス体制を整理|
システム会社の見積確認、社内対応と外部依頼の整理|
Salesforce上流・見積評価にも対応|
現場に寄り添い、ITで会社を強くする。

RYUをフォローする
WordPress
MySQLphpWordPressカスタムフィールドカテゴリータームタグ検索フォーム
スポンサーリンク
シェアする
X Facebook はてブ Pinterest LinkedIn
RYU

おすすめの未経験IT特化の就職・転職エージェントの評判

  • はじめてのエンジニア 評判
  • ウズキャリIT評判
  • CODE×CODE CAREER評判
  • UZUZ理系評判

おすすめのフリーランスエージェントの評判

  • レバテックフリーランス評判
  • Midworks(ミッドワークス)評判
  • フォスターフリーランス評判
  • ITプロパートナーズ評判
  • HiProTech(ハイプロテック)評判
  • PE-BANK評判

おすすめの技術本

楽天で詳細を見る
体系的に学ぶ 安全なWebアプリケーションの作り方 第2版 脆弱性が生まれる原理と対策の実践 [ 徳丸 浩 ]
楽天ブックス
¥ 3,520(2026/06/27 16:14時点)
Amazon
楽天
Yahoo!ショッピング

関連記事

WordPress

ホリエモンドットコムのようにNewsPicksからWordPressに自動投稿する方法

2023.05.16
WordPress
WordPress

【WordPress】アイキャッチ画像を遅延読み込みさせない方法【LCP・FCP対策】

WordPressブログ運営
WordPress

【PHP】WordPressテーマ編集で「Parse error: syntax error, unexpected T_STRING in」が出た時の解決方法

2023.07.26
WordPress
WordPress

【PHP】WordPressタグ操作方法まとめ【取得・更新】

2023.05.16
WordPress
WordPress

【WordPress】モバイル・タブレットを判定するwp_is_mobile関数

2023.05.16
WordPress
スポンサーリンク



【PHP】WordPressテーマ編集で「Parse error: syntax error, unexpected T_STRING in」が出た時の解決方法
【WordPress】モバイル・タブレットを判定するwp_is_mobile関数
ホーム
ブログ
プログラミング
PHP
WordPress
転職サイト・転職エージェント
未経験IT転職  20代未経験転職  ニート向け 
フリーランスエージェント
おすすめ  支払いサイト短い 
PVアクセスランキング にほんブログ村
2026年8月
月 火 水 木 金 土 日
 12
3456789
10111213141516
17181920212223
24252627282930
31  
« 7月    

新着情報

感動は、どうやって生まれるのか
2026.07.15 ブログ
なぜ私は、一社に依存しない働き方を選んだのか。
2026.07.13 キャリア
【Salesforce】Salesforce for Slackでメンションする方法
2024.03.06 Salesforce
ウォーターフォールはメリットがないで燃えた話と内製化のすすめ
2024.03.05 ソフトウェア工学
ルンバを買うならアイロボット公式オンラインストア特典が豪華
2024.02.14 おすすめ商品
2023年買って良かったもの
2024.01.06 おすすめ商品
【Salesforce】sfdxコマンドが使えない時の対処法
2024.01.03 Salesforce
【Salesforce】レポートでエクスポートすることのできるレコード件数の上限を増やす方法
2023.12.02 Salesforce
【評判】ENたま転職支援サービスの口コミと評判は?
2023.10.15 就職&転職
フリーランスエージェント別Salesforce公開案件数比較
2023.09.18 Salesforceフリーランス

アーカイブ

よく読まれた記事(月間)

Wi-Fiが不安定・速度が遅い対策とSGP200W(NURO光)DNSおすすめ設定
2021.08.072026.06.29
【Salesforce】標準項目一覧とシステム項目一覧まとめ
2023.02.162023.10.06
【Salesforce】レポートでエクスポートすることのできるレコード件数の上限を増やす方法
2023.12.022023.12.02
【Salesforce】フローの数式テキストで改行を使う方法
2023.07.032023.08.30
【Salesforce】数式で日付⇔テキスト変換、日付フォーマットまとめ
2023.04.102023.09.17
【Salesforce】数式でのIF関数の使用例(入れ子や複数条件など)
2023.07.262023.09.13
【Salesforce】sfdxコマンドが使えない時の対処法
2024.01.03
【無料】おすすめパブリックDNSサーバー3選 ipv4,ipv6対応
2022.02.252023.08.13
【Salesforce】ヘルプテキストに改行⇒結論できないがそれっぽく見せることは可能
2023.07.232023.08.30
【Salesforce】数式項目で0埋めするLPAD関数とRPAD関数
2023.04.052023.06.01
スポンサーリンク




カテゴリー

  • ニュース361
  • ブログ117
    • アプリ5
    • おすすめ商品3
    • キャリア37
      • IT業界のキャリアコラム2
      • フリーランス18
      • 就職&転職16
    • セキュリティ・ネットワーク・サーバー21
    • プログラミング42
      • C#3
      • PHP11
        • WordPress6
      • Salesforce27
      • ソフトウェア工学1
    • ブログ運営17

目次

  1. 実際に書いたコード
  2. コードの解説
静岡の情シス顧問|日紫喜 隆(RYU)〜現場に寄り添い、ITで会社を強くする〜
  • プロフィール・支援実績
  • 相談内容・料金
  • 運営者情報
  • プライバシーポリシー
© 2021-2026 静岡の情シス顧問|日紫喜 隆(RYU)〜現場に寄り添い、ITで会社を強くする〜.
    • ホーム
    • 支援内容
    • 実績・プロフィール
    • 料金・お問い合わせ
  • 静岡の情シス顧問|日紫喜 隆(RYU)〜現場に寄り添い、ITで会社を強くする〜