質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
WordPress

WordPressは、PHPで開発されているオープンソースのブログソフトウェアです。データベース管理システムにはMySQLを用いています。フリーのブログソフトウェアの中では最も人気が高く、PHPとHTMLを使って簡単にテンプレートをカスタマイズすることができます。

PHP

PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

Q&A

0回答

952閲覧

wordpress WP_User_Queryを使ってのユーザー検索がうまくいかない

stacking_up

総合スコア4

WordPress

WordPressは、PHPで開発されているオープンソースのブログソフトウェアです。データベース管理システムにはMySQLを用いています。フリーのブログソフトウェアの中では最も人気が高く、PHPとHTMLを使って簡単にテンプレートをカスタマイズすることができます。

PHP

PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

0グッド

0クリップ

投稿2018/03/27 08:45

練習でwp-membersプラグインを使って会員サイトを作っています。
フロントエンドでユーザー検索出来るようにしたかったので
下記サイトを参考に
https://thatwebdude.com/tutorial/wordpress-front-end-user-search-example/
ユーザー検索ができるようにしてみました。

検索を行うと
first_name, last_name, user_emailではヒットするのですが
こちらで追加したカスタムフィールドの値では検索ができませんでした。

参考サイトのソースコード

php

1 <?php 2 /* 3 Template Name: User Search 4 */ 5 6 if ( isset($_GET["search_term"]) ) { 7 $search_term = $_GET["search_term"]; 8 } else { 9 $search_term = "---"; 10 } 11 12 get_header(); ?> 13 14 <div id="primary" class="content-area"> 15 <main id="main" class="site-main" role="main"> 16 17 <?php while ( have_posts() ) : the_post(); ?> 18 19 <div class="page-header"> 20 <h1>User Search:</h1> 21 <p><i class="fa fa-search"></i> Search Term = <strong><?php echo $search_term; ?></strong></p> 22 </div> 23 <!--/.page-header--> 24 25 <div class="page-content"> 26 <form id="user-search-form"> 27 <label>Search members by name or email:</label> 28 <input type="text" placeholder="Enter search term..." id="search-term" /> 29 <input type="submit" value="Search" /> 30 </form> 31 <!--/#user-search-form--> 32 33 <?php 34 // user search query arguments 35 $user_search_args = array ( 36 'order' => 'ASC', 37 'orderby' => 'display_name', 38 'search' => '*' . esc_attr( $search_term ) . '*', 39 'meta_query' => array( 40 'relation' => 'OR', 41 array( 42 'key' => 'first_name', 43 'value' => $search_term, 44 'compare' => 'LIKE' 45 ), 46 array( 47 'key' => 'last_name', 48 'value' => $search_term, 49 'compare' => 'LIKE' 50 ), 51 array( 52 'key' => 'user_email', 53 'value' => $search_term , 54 'compare' => 'LIKE' 55 ) 56 ) 57 ); 58 // user query 59 $user_search_query = new WP_User_Query( $user_search_args ); 60 61 // Get the results 62 $users = $user_search_query->get_results(); 63 64 // Array of WP_User objects 65 if ( !empty( $users ) ) : 66 ?> 67 <ul> 68 <?php foreach ( $users as $user ) : ?> 69 <li> 70 <h5><?php echo $user->first_name . ' ' . $user->last_name; ?></h5> 71 <label><?php echo $user->user_email; ?></label> 72 </li> 73 <?php endforeach; ?> 74 </ul> 75 76 <?php else : ?> 77 78 <div class="alert"> 79 <h3>No Results</h3> 80 <hr/> 81 <p>Sorry... there were no results found for this search term.</p> 82 </div> 83 <!--/.alert--> 84 85 <?php endif; ?> 86 </div> 87 <!--/.page-content--> 88 89 <?php endwhile; ?> 90 91 </main> 92 <!--/.site-main--> 93 </div> 94 <!--/.content-area--> 95 96 <!-- Search jQuery --> 97 <script type="text/javascript"> 98 $(document).ready(function(){ 99 // search form redirect 100 $('#user-search-form').on('submit', function(e){ 101 e.preventDefault(); 102 var searchTerm = $('#search-term').val(); 103 window.location.href = 'https://yourwebsite.com/user-search/?search_term=' + searchTerm + ''; 104 }); 105 }); 106 </script> 107 108 <?php get_footer(); ?>

試したこと

下記ソースのmeta_queryのkeyを追加したカスタムフィールド名にしました。

php

1$user_search_args = array ( 2 'order' => 'ASC', 3 'orderby' => 'display_name', 4 'search' => '*' . esc_attr( $search_term ) . '*', 5 'meta_query' => array( 6 'relation' => 'OR', 7 array( 8 'key' => 'カスタムフィールド名', 9 'value' => $search_term, 10 'compare' => 'LIKE' 11 ), 12 array( 13 'key' => 'カスタムフィールド名', 14 'value' => $search_term, 15 'compare' => 'LIKE' 16 ), 17 array( 18 'key' => 'カスタムフィールド名', 19 'value' => $search_term , 20 'compare' => 'LIKE' 21 ) 22 ) 23 );

追加したカスタムフィールドの値でも検索ができるようにしたいのですが、
どうすればいいでしょうか。
ご教授いただけますと幸いです。
宜しくお願い致します。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだ回答がついていません

会員登録して回答してみよう

アカウントをお持ちの方は

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問