Функция WP_FILTER_OBJECT_LIST() в WordPress: использование и примеры

Функция 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 и часто работаете с массивами, изучение этой функции будет полезно.

Leave a Reply

Ваш адрес email не будет опубликован. Обязательные поля помечены *