Olivia5
@Olivia5
Фрилансер по жизни

Как реализовать выборку(сортировку) и отображение записей с помощью Advanced Custom Fields?

Есть элементы, созданные с помощью функции "повторитель", есть чекбоксы, которые должны сортировать эти элементы при нажатии на сам чекбокс.

Сразу покажу макет, чтобы было наглядно:

Макет

При нажатии на какой-либо ярлык, элементы сортируются, это реализовано с помощью js:

$('.sort').on('click', function() {
  $('.item').hide();

  var type = $(this).attr("data-show");
  $('.sortcontainer .item' + type).show();
});


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

<?php

// переменные
$field = get_field_object('add_meta');
$colors = $field['value'];


// проверка
if( $colors ): ?>

	<?php foreach( $colors as $color ): ?>
		<button type="button" data-show="" class="btn btn-info sort"><?php echo $field['choices'][ $color ]; ?></button>
	<?php endforeach; ?>

<?php endif; ?>


Но как теперь связать и отобразить такую-же сортировку на сайте ?

Из документации:

Работа с Query posts
Показывает как выбрать записи содержащие чекбокс равный «red». Нам поможет в этом query posts. Поле чекбокс сохраняется в виде сериализованного массива, поэтому надо делать выборку через meta_query и использовать тип сравнения compare.


Может такой подход поможет ? :

<?php

$posts = get_posts(array(
    'meta_query' => array(
        array(
            'key' => 'colors', // name of custom field
            'value' => '"red"', // matches exactly "red"
            'compare' => 'LIKE'
        )
    )
));

if( $posts ) {
    //...
}


Я так поняла это выборка чекбокса по "value", ок, а как задейстовать и связать элементы, чтобы они сортировались при нажатии ?
  • Вопрос задан
  • 81 просмотр
Решения вопроса 1
Lord_Dantes
@Lord_Dantes
Чат джунов t.me/developersjunior
Не-не-не вообще не то. Если у вас там есть пункт "Все записи", то зачем вам фильтровать с помощью PHP. Вы сначала сделайте цикл всех записей потом фильтруйте и отображайте их с помощью тех же самых атрибутов с помощью js.
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы