Использование get_posts с аргументами из мета-ключей
Я использую get_posts, но мне нужно уточнить запрос на основе записей, где определенный meta_key имеет определенное значение.
Что-то вроде этого
<?php
// Например, location=berkshire
$reviews = get_posts('post_type=reviews&numberposts=-1');
Возможно ли это сделать и если да, то как?
Замечательно

Функция get_posts
принимает любые аргументы, которые поддерживает WP_Query. Так что есть несколько вариантов.
1. meta_key
и meta_value
<?php
get_posts(array(
// другие аргументы здесь
'meta_key' => 'some_key',
'meta_value' => 'some value'
));
2. meta_query
meta_query
более гибкий, чем использование meta_key
и meta_value
. Например, если вам нужно получить записи, у которых meta_key соответствует одному из трех значений:
<?php
get_posts(array(
// другие аргументы здесь
'meta_query' => array(
// meta_query принимает массив массивов, будьте внимательны!
array(
'key' => 'some_key',
'value' => array('anOption', 'anotherOption', 'thirdOption'),
'compare' => 'IN'
)
)
));
В документации WP_Query
есть множество примеров в разделе о произвольных полях.

Да, это возможно. Используйте параметры meta_key
и meta_value
. meta_key
предназначен для ключа произвольного поля (например, location), а meta_value
— для значения произвольного поля (например, berkshire).
Используйте уточненный код ниже:
/* Аргументы запроса. */
$args = array(
'post_type' => 'reviews',
'posts_per_page' => -1,
'meta_key' => 'location',
'meta_value' => 'berkshire'
);
/* Получение отзывов */
$reviews = get_posts( $args );
