2018.08.09

[WordPress]管理画面のユーザー検索にカスタムフィールドの値を反映させる方法

こんばんは、ゾノ( @ozonosho )です。

さて、今日のブログではWordPressで管理画面のユーザー検索にカスタムフィールドの値を反映させる方法を紹介したいと思います。

WordPressではカスタムフィールドを用いることでユーザー情報に任意の項目(住所や経歴など)を追加することができます。

しかしながらユーザー検索機能はユーザー名やメールアドレスによる検索にしか対応していないため、ご自身で作成したカスタムフィールドの値を検索対象に含めたいときには今回紹介する方法を実装してみてください。

WordPressで管理画面のユーザー検索にカスタムフィールドの値を反映させる方法

実装は簡単で、下記のコードをfunctions.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;

      $user_query->query_from .= " JOIN { $wpdb->usermeta } as UM1 ON UM1.user_id = { $wpdb->users }.ID AND UM1.meta_key = 'フィールド名①'";
      $user_query->query_from .= " JOIN { $wpdb->usermeta } as UM2 ON UM2.user_id = { $wpdb->users }.ID AND UM2.meta_key = 'フィールド名②'";

      $user_query->query_where = 'WHERE 1=1' . $user_query->get_search_sql($search, array('user_login', 'user_email', 'nickname', 'UM1.meta_value', 'UM2.meta_value'), 'both');
    }
  }
}
add_action('pre_user_query', 'extended_user_search');

カスタムフィールド名①②のところに検索対象に含めたいカスタムフィールドのフィールド名(半角英数字)をそれぞれ記入してください。

上記コードでは2種類のカスタムフィールドを検索対象に追加していますが、同様の記述方式でいくつでも検索対象に追加することができます。

コードを保存して無事にカスタムフィールドの値でユーザーを検索できれば成功です。

【おまけ】ユーザー一覧画面に任意のカスタムフィールド項目を表示する方法

検索機能にカスタムフィールの値を反映させるだけでなく、ユーザー一覧画面の表示項目に任意のカスタムフィールドを追加したい場合はfunctions.phpに下記のコードを記入してください。

//ユーザー一覧ページの表示項目に任意のカスタムフィールドを追加
function manage_users_columns($column_headers) {
    $column_headers['フィールド名①'] = 'フィールドラベル①';
    $column_headers['フィールド名②'] = 'フィールドラベル②';
    return $column_headers;
} 
function custom_manage_users_custom_column($custom_column, $column_name, $user_id) {
    $user_info = get_userdata($user_id);
    ${$column_name} = $user_info->$column_name;
    $custom_column = "\t" . ${$column_name} . "\n";
    return $custom_column;
}
add_action('manage_users_columns', 'manage_users_columns');
add_action('manage_users_custom_column', 'custom_manage_users_custom_column', 10, 3); 

これで作成したカスタムフィールド(住所や経歴など)をユーザー一覧画面に表示させることができます。

おわりに

以上、今回の記事ではWordPressで管理画面のユーザー検索にカスタムフィールドの値を反映させる方法を紹介させていただきました。

この部分のカスタマイズ情報はあまり出回っていないため、すこしでも参考になれば幸いです。

当サイトではWordPressのカスタマイズ依頼を請け負っています。実現したい機能・要望がある方はぜひ下記ページよりご相談ください。

あなたのサイトに理想の機能を実装!WordPressカスタマイズサービス

本サービスはあなたのWordPressサイトに理想の機能を実装するサービスとなります。 どのような機能・要望でも実現可能です! Wo......

→この記事を読む