1. TOP
  2. >カスタマイズ・小技>
  3. WordPress管理画面 プラグインなしでカスタムフィールドを検索に含める。

WordPress管理画面 プラグインなしでカスタムフィールドを検索に含める。

カスタマイズ・小技, 技術メモ, WordPress

2022/09/09
2022/09/11
WordPress管理画面 プラグインなしでカスタムフィールドを検索に含める。

この記事は【2022年9月11日】が最後の更新のため、記事の内容が古い可能性があります。

WordPressの管理画面にある投稿一覧のワード検索にて、カスタムフィールドの内容をを含める方法です。カスタムフィールドを修正したいけど、記事が大量にあったりどこにあるのか分からない場合に重宝すると思います。

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' );

function cf_search_where( $where ) {
    global $pagenow, $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' );

function cf_search_distinct( $where ) {
    global $wpdb;

    if ( is_search() ) {
        return "DISTINCT";
    }

    return $where;
}
add_filter( 'posts_distinct', 'cf_search_distinct' );

WordPressの検索機能は「posts」テーブルのみ検索されるようになっているので、
カスタムフィールドがある「postmeta」テーブルとpostsテーブルを外部結合し、カスタムフィールドを含めるように検索クエリを変更。
重複したデータを除外してデータを取得するDISTINCTを指定しているみたいです。

参考サイト
https://adambalee.com/search-wordpress-by-custom-fields-without-a-plugin/

- PR -

ニッチなテーマのイラスト素材投稿始めました。良かったら使ってください。
RU DESIGN/無料イラスト・フリー素材「イラストAC」

オリジナル絵本 Kindleにて出版
ナマケモノのふにゃまるちゃん

ドメイン取得は同じところで取得しておくと便利ですよ。


応援・支援よろしくお願いいたします。サイト運営に使わせていただきます。

■BTC
1PPYM4493tNYVZuGxXnYLpVdKJXSwFagPQ
■MATIC
0xC75744667A7396DFF507cf44371A2CF0B6eEF03B
■ETH
0xC75744667A7396DFF507cf44371A2CF0B6eEF03B

ホームページ制作ならRU DESIGN

関連記事

【OCLP】公式サポートが終了したMacに最新のOS「sonoma」をインストール
2024/08/02
 公式サポートの終了した古いMacに最新のmacOSを導入することができる「OpenCore Legacy Patcher(OCLP)」を利用してみました。今回...
メタタグを使用して簡単にリダイレクト(301)設定する方法
2024/05/23
サイトのドメイン変更時、なんらかの理由で公開時のアドレスと異なる記事へ移転や変更をした際に、訪れたユーザーを指定したURLへ転送するリダイレクト機能について。古...
WordPressでカスタム投稿に投稿する際に、アイキャッチを設定していなければ自動で設定させる方法
2024/05/20
ワードプレスのアイキャッチの設定をしなかった場合でも、投稿時に自動で設定してくれる方法です。   functions.php function def...
別のワードプレスへ記事移行の際に画像もエクスポートしてくれるプラグイン
2024/05/16
ワードプレスの記事をエクスポートする際に、デフォルトの状態ではメディア(添付ファイル)は含まれません。「Export media with selected c...
ワードプレス各バージョンと使用可能なPHPバージョン一覧
2024/01/29
 WordPressのバージョンによって使用可能なPHPのバージョンは異なってきます。PHPのバージョンによっては、ワードプレスが正常に動作しなかったり、テンプ...