【WordPress】管理画面でカスタムフィールドの内容でユーザーや記事の絞り込みを実装する方法
こんにちは。もきちです。
今回はWordPress管理画面のユーザーの一覧画面で、カスタムフィールドの項目で検索する方法をご紹介します。
目次
ユーザー情報にカスタムフィールドを追加する
WordPressのデフォルトのユーザーの情報には名前やニックネーム等の項目がありますが、
それら以外の項目、例えば「会員番号」や「電話番号」を追加したい場合があると思います。
そんな時は「Advanced Custom Fields」などのプラグインを使うとすぐに追加できます。
- Advanced Custom Fields
- カスタムフィールドを追加することができる便利なプラグイン。
ユーザー情報だけでなく、投稿記事や固定ページなどにもカスタムフィールドを追加できる。
https://ja.wordpress.org/plugins/advanced-custom-fields/
追加したカスタムフィールドで検索できるようにする
プラグインを使えば、簡単にユーザー情報にカスタムフィールドを追加はできます。しかし、一覧画面で追加したカスタムフィールドの内容で検索しても、結果が表示されません。
検索対象はデフォルトのユーザー項目だけ
実は、何も設定しない場合はデフォルトのユーザー項目しか検索の対象になっていません。
そこで、functions.phpを編集して、追加した項目で検索できるようにします。
カスタムフィールドの項目を検索対象として追加する
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 |
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 wp_usermeta UM1 ON UM1.user_id = {$wpdb->users}.ID AND UM1.meta_key = 'add_field_1'"; $user_query->query_from .= " JOIN wp_usermeta UM2 ON UM2.user_id = {$wpdb->users}.ID AND UM2.meta_key = 'add_field_2'"; $user_query->query_from .= " JOIN wp_usermeta UM3 ON UM3.user_id = {$wpdb->users}.ID AND UM3.meta_key = 'add_field_3'"; $user_query->query_where = 'WHERE 1' . $user_query->get_search_sql( $search, array( 'user_login', 'user_email', 'user_nicename', 'UM1.meta_value', 'UM2.meta_value', 'UM3.meta_value' ), 'both' ); } } } add_action( 'pre_user_query', 'extended_user_search' ); |
functions.phpにこれらのコードを追加します。
その後、上記コード内の‘add_field_X’にあたる部分を追加したカスタムフィールドの内容に置き換えてください。
検索項目を増やす際の方法と注意点
今回は3つ記述していますが、追加したい場合は同様にUM4を追加し、get_search_sql()の中にUM4.meta_valueを追加します。同様にいくつも検索する項目を追加できますが、項目が増える度に検索結果取得のSQLの処理は重くなっていきますので、あまりに増やしすぎることはおすすめしません。
最後に
追加した項目で検索ができたでしょうか。
今回、検索対象に項目を追加しましたが、一覧画面ではカスタムフィールドの内容が表示されていないと思います。
一覧画面にカスタムフィールドの項目を表示する場合は、「Admin Columns」のプラグインがおすすめです。
実は、このプラグインの有料版を使えば今回お伝えした内容もすぐに解決できたんですが、無料でできることは無料でやりたいですよね!ってことで、紹介させていただきました。
お役に立てば幸いです。
- おすすめ記事
-
-
なべっち2018.12.27
-
POPULAR
もきち
Director / Creator