Сьогодні ми хочемо познайомити вас з двома спорідненими класами: WP_Meta_Query і WP_Date_Query.

Клас WP_Meta_Query – це другорядне клас, який «допомагає» WP_Query виконувати запити, пов’язані з метаданими.

В базі даних WordPress зберігає три типи метаданих: записи користувача і коментарів. У попередніх посібниках ми бачили, що можна створювати запити на вибірку метаданих усередині запиту, який ми здійснюємо з допомогою класів WP_User_Query і WP_Comment_Query (за допомогою параметра ‘meta_query’). Насправді для цього використовується WP_Meta_Query.

За допомогою класу WP_Meta_Query ви можете отримати SQL-команди для запитів, пов’язаних з метаданими. Цей клас сам по собі не отримує результати проведеного запиту, і замість цього готує SQL-команди, які ви зможете використовувати де-небудь ще.

Приклад використання класу WP_Meta_Query

Припустимо, що вам потрібно створити спеціальний плагін, за допомогою якого ви будете виводити записи з однаковими значеннями мета-ключа. Або будь-яким іншим однаковим значенням поля метаданих. І в результаті ви хочете отримати SQL— запит, щоб динамічно використовувати його в різних блоках коду. Щоб отримати потрібний SQL— запит, вам знадобиться наступний код:

‘OR’,
array(
‘meta_key’ => ‘Some_Key’,
‘meta_value’ => ‘Some_Value’,
‘compare’ => ‘=’
),
array(
‘meta_key’ => ‘Some_Other_Key’,
‘meta_value’ => ‘Some_Other_Value’,
‘compare’ => ‘=’
)
);
$my_meta_query = new WP_Meta_Query;
$my_meta_query->parse_query_vars( $my_meta_query_args );
$my_meta_query_sql = $my_meta_query->get_sql( ‘post’, $wpdb->posts, ‘ID’ );
?>

Змінна $my_meta_sql містить у собі SQL-команди вашого запиту, і ви можете повторно використовувати його в будь-якому блоці коду на сайті.

Проводимо запити по датах за допомогою класу WP_Date_Query

WP_Date_Query – допоміжний клас для WP_Query, WP_User_Query і WP_Comment_Query. Вперше він з’явився в WordPress версії 3.7. Тоді він не підтримував WP_User_Query, але з виходом версії 4.1 у нас з’явилася можливість виконувати запит до таблиці users (до колонці user_registered).

Клас WP_Date_Query дозволяє нам здійснювати запити до полів дати таблиць posts, comments та users. Як і WP_Meta_Query, цей допоміжний клас також дозволяє отримати підготовлений SQL-код, який можна використовувати в запитах, пов’язаних з датами.

Приклад використання класу WP_Date_Query

Давайте уявимо, що нам потрібно запитати коментарі, які були зроблені протягом поточного місяця до обіду.

Потрібний SQL-код можна отримати наступним чином:

date( ‘n’ ),
),
array(
‘before’ => ‘noon’
),
‘relation’ => ‘AND’
);
$my_date_query = new WP_Date_Query( $my_date_query_args, ‘comment_date’ );
$my_date_query_sql = $my_date_query->get_sql();
?>

Тут важливо врахувати, що ми можемо використовувати PHP-формат відносних дат, який може дуже стати в нагоді.

На завершення

Ми завершуємо наше тривале і, сподіваюся, захоплюючу подорож по світу класу WP_Query. У наступній статті ми підсумуємо все те, чого навчилися в цій серії.

Можливо, у вас є, що додати до цієї статті? Також не забудьте поділитися цим корисним матеріалом з друзями!

Переклад статті «Mastering WP_Meta_Query & WP_Date_Query» був підготовлений дружною командою проекту Сайтостроение від А до Я.