Попытка создать форму фильтра внешнего интерфейса для сортировки профилей пользователей.
Вот что я пытаюсь сделать:
- Отображение профилей пользователей на основе нескольких параметров фильтрации (избранное цвет, продукты питания, интересы и др. c). Если у пользователя есть профиль с голубым, зеленым или розовым цветом в качестве избранного, то его профиль должен отображаться, когда в форме выбран любой из этих цветов.
- Показывать количество результатов (пользователей), когда фильтры проверены
Мне просто нужна помощь, чтобы начать. Это то, что я до сих пор. Я думаю, что проблема в этой строке в моем пользовательском запросе:
'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!';
} ;?>