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

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

ただいまの
回答率

89.11%

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

受付中

回答 0

投稿

  • 評価
  • クリップ 0
  • VIEW 1,017

stacking_up

score 4

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

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

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

    <?php
    /*
    Template Name: User Search
    */

    if ( isset($_GET["search_term"]) ) {
        $search_term = $_GET["search_term"];
    } else {
        $search_term = "---";
    }

    get_header(); ?>

    <div id="primary" class="content-area">
        <main id="main" class="site-main" role="main">

        <?php while ( have_posts() ) : the_post(); ?>

            <div class="page-header">
                <h1>User Search:</h1>
                <p><i class="fa fa-search"></i> Search Term = <strong><?php echo $search_term; ?></strong></p>
            </div>
            <!--/.page-header-->

            <div class="page-content">
                <form id="user-search-form">
                                <label>Search members by name or email:</label>
                                <input type="text" placeholder="Enter search term..." id="search-term" />
                                <input type="submit" value="Search" />
                </form>
                <!--/#user-search-form-->

                <?php
                    // user search query arguments
                    $user_search_args = array (
                        'order'      => 'ASC',
                        'orderby'    => 'display_name',
                        'search'     => '*' . esc_attr( $search_term ) . '*',
                        'meta_query' => array(
                            'relation' => 'OR',
                            array(
                                'key'     => 'first_name',
                                'value'   => $search_term,
                                'compare' => 'LIKE'
                            ),
                            array(
                                'key'     => 'last_name',
                                'value'   => $search_term,
                                'compare' => 'LIKE'
                            ),
                            array(
                                'key'     => 'user_email',
                                'value'   => $search_term ,
                                'compare' => 'LIKE'
                            )
                        )
                    );
                    // user query
                    $user_search_query = new WP_User_Query( $user_search_args );

                    // Get the results
                    $users = $user_search_query->get_results();

                    // Array of WP_User objects
                    if ( !empty( $users ) ) :
                ?>
                    <ul>
                        <?php foreach ( $users as $user ) : ?>
                            <li>
                                <h5><?php echo $user->first_name . ' ' . $user->last_name; ?></h5>
                                <label><?php echo $user->user_email; ?></label>
                            </li>
                        <?php endforeach; ?>
                    </ul>

                <?php else : ?>

                    <div class="alert">
                        <h3>No Results</h3>
                        <hr/>
                        <p>Sorry... there were no results found for this search term.</p>
                    </div>
                    <!--/.alert-->

                <?php endif; ?>
            </div>
            <!--/.page-content-->

        <?php endwhile; ?>    

        </main>
        <!--/.site-main-->
    </div>
    <!--/.content-area-->

    <!-- Search jQuery -->
    <script type="text/javascript">
    $(document).ready(function(){
        // search form redirect
        $('#user-search-form').on('submit', function(e){
            e.preventDefault();
            var searchTerm = $('#search-term').val();
            window.location.href = 'https://yourwebsite.com/user-search/?search_term=' + searchTerm + '';
        });
    });
    </script>

    <?php get_footer(); ?>

 試したこと

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

$user_search_args = array (
    'order'      => 'ASC',
    'orderby'    => 'display_name',
    'search'     => '*' . esc_attr( $search_term ) . '*',
        'meta_query' => array(
            'relation' => 'OR',
                array(
                    'key'     => 'カスタムフィールド名',
                    'value'   => $search_term,
                    'compare' => 'LIKE'
                ),
                array(
                    'key'     => 'カスタムフィールド名',
                    'value'   => $search_term,
                    'compare' => 'LIKE'
                ),
                array(
                    'key'     => 'カスタムフィールド名',
                    'value'   => $search_term ,
                    'compare' => 'LIKE'
                    )
                )
            );


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

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

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

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

    クリップを取り消します

  • 良い質問の評価を上げる

    以下のような質問は評価を上げましょう

    • 質問内容が明確
    • 自分も答えを知りたい
    • 質問者以外のユーザにも役立つ

    評価が高い質問は、TOPページの「注目」タブのフィードに表示されやすくなります。

    質問の評価を上げたことを取り消します

  • 評価を下げられる数の上限に達しました

    評価を下げることができません

    • 1日5回まで評価を下げられます
    • 1日に1ユーザに対して2回まで評価を下げられます

    質問の評価を下げる

    teratailでは下記のような質問を「具体的に困っていることがない質問」、「サイトポリシーに違反する質問」と定義し、推奨していません。

    • プログラミングに関係のない質問
    • やってほしいことだけを記載した丸投げの質問
    • 問題・課題が含まれていない質問
    • 意図的に内容が抹消された質問
    • 過去に投稿した質問と同じ内容の質問
    • 広告と受け取られるような投稿

    評価が下がると、TOPページの「アクティブ」「注目」タブのフィードに表示されにくくなります。

    質問の評価を下げたことを取り消します

    この機能は開放されていません

    評価を下げる条件を満たしてません

    評価を下げる理由を選択してください

    詳細な説明はこちら

    上記に当てはまらず、質問内容が明確になっていない質問には「情報の追加・修正依頼」機能からコメントをしてください。

    質問の評価を下げる機能の利用条件

    この機能を利用するためには、以下の事項を行う必要があります。

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

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

  • ただいまの回答率 89.11%
  • 質問をまとめることで、思考を整理して素早く解決
  • テンプレート機能で、簡単に質問をまとめられる