В WordPress для фильтрации произвольных записей по нескольким произвольным полям одновременно можно использовать функции WP_Query
и meta_query
.
WP_Query
— это класс, который представляет собой запрос к базе данных WordPress для получения записей или объектов определенного типа (например, постов или пользователей). meta_query
— это параметр WP_Query
, с помощью которого можно указать условия фильтрации на основе произвольных полей.
Для примера рассмотрим ситуацию, когда у нас есть произвольный тип записей books
с произвольными полями author
(автор книги) и genre
(жанр книги). Нам нужно отобразить все книги, у которых автор - "John" и жанр - "Fantasy".
Первым шагом нужно создать запрос с помощью функции WP_Query
. В этом запросе мы указываем тип записей books
и параметр meta_query
с условиями фильтрации:
$args = array( 'post_type' => 'books', 'meta_query' => array( 'relation' => 'AND', array( 'key' => 'author', 'value' => 'John', 'compare' => '=' ), array( 'key' => 'genre', 'value' => 'Fantasy', 'compare' => '=' ) ) ); $query = new WP_Query( $args );
Здесь мы использовали параметр relation
со значением AND
, чтобы указать, что оба условия фильтрации должны быть выполнены одновременно. Затем мы создали два элемента в массиве meta_query
, каждый из которых представляет условие фильтрации для одного произвольного поля. Для каждого элемента мы указали ключ (key
) — название произвольного поля, значение (value
) — значение, с которым нужно сравнить поле, и оператор сравнения (compare
), который в данном случае равен =
.
После создания запроса можно выполнить его и получить результаты:
if ( $query->have_posts() ) { while ( $query->have_posts() ) { $query->the_post(); // Выводим содержимое записи } wp_reset_postdata(); } else { // Выводим сообщение о том, что записей не найдено echo 'Записей не найдено'; }
В этом примере мы используем цикл while
для обхода всех найденных записей и функцию the_post()
для установки контекста текущей записи. Внутри цикла можно выводить содержимое каждой записи или делать с ней нужные операции. После цикла мы вызываем функцию wp_reset_postdata()
для сброса контекста записи.
Таким образом, с помощью функций WP_Query
и meta_query
в WordPress можно легко реализовать фильтрацию произвольных записей по нескольким произвольным полям одновременно.