Функция WP_FILTER_OBJECT_LIST() в WordPress
Функция wp_filter_object_list()
позволяет фильтровать список объектов на основе заданных параметров. Давайте разберемся, как она работает и как ее использовать.
Описание функции
Функция wp_filter_object_list()
выбирает объекты из списка, которые соответствуют определенным критериям.
- Ключ (key) — это имя свойства объекта.
- Значение (value) — это значение, с которым мы сравниваем это свойство.
Объект может иметь и другие свойства, которых нет в заданных критериях, и это не помешает его выбору. Однако, если используется оператор "AND", отсутствие любого из необходимых свойств приведет к исключению объекта.
При использовании аргумента $field
эта функция может также возвращать конкретное поле из всех подходящих объектов.
Использование функции
Синтаксис
wp_filter_object_list( $input_list, $args, $operator, $field );
Параметры
- $input_list (обязательный): массив объектов, который нужно отфильтровать.
- $args (необязательный): массив пар "ключ => значение", по которым будет осуществляться фильтрация. По умолчанию — пустой массив.
- $operator (строка, необязательный): логическая операция для сравнения. Значение 'AND' означает, что все элементы должны совпадать. 'OR' — если достаточно совпадения хотя бы одного элемента. 'NOT' — если элементы не должны совпадать. По умолчанию — 'AND'.
- $field (булевый или строковый, необязательный): поле объекта, которое будет возвращено вместо целого объекта. По умолчанию — false.
Пример использования
Предположим, у нас есть массив объектов постов (посты в WordPress). Каждое такое сообщение имеет свои свойства, такие как ID, автор, дата и статус комментариев.
Вот как может выглядеть такой массив:
Array
(
[0] => WP_Post Object (
[ID] => 2773
[post_author] => 1
[post_date] => 2013-06-12 21:09:57
[post_status] => publish
[comment_status] => open
)
[1] => WP_Post Object ( ... )
)
Задача — получить ID всех постов, у которых автор = 1 и комментарии открыты. Используем wp_filter_object_list()
:
$args = array('post_author' => '1', 'comment_status' => 'open');
$filtered_posts = wp_filter_object_list( $posts, $args, 'or', 'ID' );
В результате переменная $filtered_posts
будет содержать массив ID найденных постов:
Array
(
[0] => 19
[1] => 23
...
)
Здесь оператор "or" означает, что мы выбираем посты, где post_author=1
или comment_status=open
. Если бы вместо "or" мы указали "and", выбирались бы только те посты, которые соответствуют обоим условиям.
Код функции
Вот как выглядит реализация функции wp_filter_object_list()
в WordPress:
function wp_filter_object_list( $input_list, $args = array(), $operator = 'and', $field = false ) {
if ( ! is_array( $input_list ) ) {
return array();
}
$util = new WP_List_Util( $input_list );
$util->filter( $args, $operator );
if ( $field ) {
$util->pluck( $field );
}
return $util->get_output();
}
Вывод
Функция wp_filter_object_list()
очень полезна для выборки объектов в WordPress на основе заданных условий. Она позволяет гибко управлять выборкой через параметры, что делает работу с массивами объектов более удобной и эффективной. Если вы разрабатываете на WordPress и часто работаете с массивами, изучение этой функции будет полезно.