ヘッダーのロゴ

すぐに仕事で使えるIT技術情報メディア

WordPressのユーザー一覧管理画面のユーザー検索機能の絞り込み内容を拡張できるようにする実装方法

投稿日:2024年04月08日(月) 更新日:2024年04月15日(月)
WordPressのユーザー一覧管理画面のユーザー検索機能の絞り込み内容を拡張できるようにする実装方法|WordPress MAGAZINE ワードプレスマガジン|すぐに仕事で使えるIT技術情報メディア

みなさんこんにちは!エンジニアの高澤です!

今回はWordPressのユーザー一覧管理画面のユーザー検索機能の絞り込み内容を拡張できるようにする実装方法について解説していきたいと思います。

今回の内容は、例えばWordPressで会員サイトを構築して運用している場合などに大変有効かと思います。

WordPressで会員サイトを構築する場合はあらかじめ機能として備わっているデフォルトのユーザー機能を利用することになるので、大量のユーザー情報が存在することになるかと思います。

そんな時にお役立ていただけるのが今回の内容なので、よろしければぜひお仕事で当記事の内容をご利用いただけましたら幸いです。

当記事の実装内容

まずは当記事の実装内容についてご説明しておきたいと思います。

結論としては、タイトルにもありますように「WordPressのユーザー一覧管理画面のユーザー検索機能の絞り込み内容を拡張できるようにする」という内容になります。

通常WordPressのデフォルトの状態だと、ユーザー名やメールアドレスなどの基本的な情報しか検索対象になりませんが、当記事の内容を実装することで、ファーストネーム、ラストネーム、ニックネームなどの追加の情報も検索対象に含めることができます。

上図の部分の絞り込み検索機能の検索要素を拡張することができます。

当記事の内容を実装することのメリット

当記事の内容を実装することによって以下のメリットがあるかと思います。

  • 任意のデータ項目で検索することができる
  • 運用の効率化

当記事で掲載しているサンプルコードをご自身のWordPressに適した形でカスタマイズしていただくことにより、大量のユーザーデータを効率的に絞り込むことができます。

実装する方法

それでは早速実装する方法について解説していきたいと思います。

以下のコードをfunctions.phpにコピー&ペーストしてください。

<?php
// ユーザー検索を拡張し、名前でも検索できるようにする関数
function extended_user_search( $user_query ) {
    // 検索キーワードが設定されている場合
    if ( $user_query->query_vars['search'] ){
      // 検索キーワードをトリムして取得
      $search = trim( $user_query->query_vars['search'], '*' );
      // 検索キーワードが現在の検索クエリと一致する場合
      if ( $_REQUEST['s'] == $search ){
        global $wpdb;
  
        // ユーザーメタデータをJOINして検索条件を拡張する
        $user_query->query_from .= " JOIN {$wpdb->usermeta} as UM1 ON UM1.user_id = {$wpdb->users}.ID AND UM1.meta_key = 'first_name'";
        $user_query->query_from .= " JOIN {$wpdb->usermeta} as UM2 ON UM2.user_id = {$wpdb->users}.ID AND UM2.meta_key = 'last_name'";
        $user_query->query_from .= " JOIN {$wpdb->usermeta} as UM3 ON UM3.user_id = {$wpdb->users}.ID AND UM3.meta_key = 'nickname'";
  
        // 検索条件を設定する
        $user_query->query_where = 'WHERE 1=1' . $user_query->get_search_sql( $search, array( 'user_login', 'user_email', 'user_nicename', 'UM1.meta_value', 'UM2.meta_value', 'UM3.meta_value' ), 'both' );
  
      }
    }
  }
  // pre_user_query フックに上記関数を追加してユーザー検索を拡張する
  add_action( 'pre_user_query', 'extended_user_search' );

ペーストして保存していただき、管理画面ページを更新していただくと実装は完了です。

あとは実際に検索して確認してみてください。

また、当記事でご紹介したサンプルコードをカスタマイズしていただければより検索要素を増やしたりすることができ、応用することが可能です。

よろしければぜひお試しください。

まとめ

WordPressのユーザー一覧管理画面のユーザー検索機能の絞り込み内容を拡張できるようにする実装方法についての解説は以上になります。

今回の内容は、WordPressで会員サイトを構築して運用している場合などに重宝されるテクニックになってくるかと思います。

WordPressで会員サイトを構築する場合は多くの場合、WordPressデフォルトのユーザー機能を利用することになるので、大量のユーザー情報を管理しなければならなくなります。

そんな時にユーザーを任意のデータ項目で検索できるようになることで運用上効率化につながるかと思いますので、よろしければぜひ当記事をお役立ていただけましたら幸いです。

執筆者

ワードプレスマガジン編集部 高澤 翔汰

歴4年目(2024年8月以降から5年目です)のエンジニアです!
CMSでのサイト構築とWebデザイン制作を兼任して4年目になります。
自作のiOSアプリ(iPhoneアプリ)やWordPressプラグインを開発することもあり、まだまだ現在進行形で勉強中です!