Использование WP User Query для фильтрации профилей пользователей при отправке формы - PullRequest
0 голосов
/ 08 февраля 2020

Попытка создать форму фильтра внешнего интерфейса для сортировки профилей пользователей.

Вот что я пытаюсь сделать:

  1. Отображение профилей пользователей на основе нескольких параметров фильтрации (избранное цвет, продукты питания, интересы и др. c). Если у пользователя есть профиль с голубым, зеленым или розовым цветом в качестве избранного, то его профиль должен отображаться, когда в форме выбран любой из этих цветов.
  2. Показывать количество результатов (пользователей), когда фильтры проверены

Мне просто нужна помощь, чтобы начать. Это то, что я до сих пор. Я думаю, что проблема в этой строке в моем пользовательском запросе:

'value' => $_GET['fav_color'][0]

Он возвращает только первый элемент, который проверяется, когда в форме выбрано несколько значений. Если я изменю 0 на 1, он вернет второе выбранное значение. Это не работает вообще, если я удаляю скобки, и я не могу понять, как создать массив всех индексов при использовании LIKE.

Форма:

<form id="filter" method="get" action="<?php echo get_permalink(); ?>">
    <div>
        <h3>Filter By</h3>
        <label id="#color_filter" for="fav_color[]">FAVORITE COLOR +</label></br></br>

        <label class="checkbox"><input type="checkbox" name="fav_color[]" value="Blue" <?php if (isset($_GET['fav_color']) && in_array("Blue", $_GET['fav_color'])) { echo "checked='checked'"; } ?>> Blue</label></br>

        <label class="checkbox"><input type="checkbox" name="fav_color[]" value="Orange" <?php if (isset($_GET['fav_color']) && in_array("Orange", $_GET['fav_color'])) { echo "checked='checked'"; } ?>> Orange</label></br>

        <label class="checkbox"><input type="checkbox" name="fav_color[]" value="Pink" <?php if (isset($_GET['fav_color']) && in_array("Pink", $_GET['fav_color'])) { echo "checked='checked'"; } ?>> Pink</label></br>

        <label class="checkbox"><input type="checkbox" name="fav_color[]" value="Purple" <?php if (isset($_GET['fav_color']) && in_array("Purple", $_GET['fav_color'])) { echo "checked='checked'"; } ?>> Purple</label></br>
    </div>
    <div>
        <input type="submit" value="Search" />
        <a href="<?php echo get_permalink(); ?>">Reset</a>
    </div>
</form>

Пользовательский запрос:

            <?php $args = array(
                'role'           => 'user_profile', // custom role
                'orderby'        => 'user_nicename',
                'count_total'    => true,
                'fields'         => 'all_with_meta',
                'meta_query' => array( 
                    array(
                            'key' => 'fav_color',
                            'value' => $_GET['fav_color'][0],
                            'compare' => 'LIKE',
                        ),
                ));?>

            <?php // The User Query
            $results_query = new WP_User_Query( $args );
            $users = get_users( array( 'fields' => array( 'ID' ) ) );

            // The User Loop
            if ( ! empty( $results_query->results ) ) {
                foreach ( $results_query->results as $user ) {

                    $user_name = get_user_meta($user->ID, 'full_name', true);
                    $user_color = get_user_meta($user->ID, 'fav_color', true); 

                    echo $user_name;
                    echo $user_color;
                }
            } else {
                echo 'No users found!';
            } ;?>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...