Задача: Нужно сделать сайт, либо страницу на базе Wordpress. В которой будет загружаться различные мероприятия, описание к ним и фото. И нужен фильтр, что б по определенным критериям показывались определенные мероприятия. Например: Возраст участника, город Проведения, Бесплатно/платно и т.п. Чтоб каждый участник мог по фильтру найти подходящее ему мероприятие. Вроде бы задача простая, но уже целую неделю мучаюсь... Посоветуйте не сложный вариант, если такие есть
p.s. я уже думаю взять готовый шаблон интернет-магазина и просто исправить фильтр под себя... ну я думаю, что это не есть правильно и обращаюсь к вам за помощью
Для начала вам надо ТЗ написать - что из ваших "критериев" является чем - где это таксономия, где метаданные (и какого типа в контексте meta_compare - числовые, строка, дата) и тд. Потом переосмыслить (и возможно переписать) все это. Для группировки использовать именно таксономии. Метаданные для второстепенного (по ним желательно выбирать-сортировать только в крайнем случае).
Сами фильтры делаются достаточно просто - собираете в форме фильтра все установленные параметры поиска и передаете их в WP_Query, который выводит записи в виде $args. Если это основной запрос (Main Query) - передаете через хук pre_get_posts.
А в чем суть ваших мучений, просто прописываете в реквизитах блока data-attr1, data-attr2... data-attrN и затем сравниваете с фильтром. Не прошедшие фильтр записи скрываете например атрибутом hidden
Простой способ, который сработает если объектов немного и они все на одной странице. И не будет работать как надо, если этих объектов сотни/тысячи, выводится Х штук на страницу. С помощью дата-атрибутов вы сможете фильтровать только те, которые загружены на конкретной страничке.
Игорь Воротнёв, Data-атрибуты просто самый сложный пример. Фильтрация при запросе из БД или из массива JS еще проще и по смыслу выполняется так же. Автор увы не написал в чем его затруднения.