Использование get_posts с аргументами из мета-ключей

13 окт. 2011 г., 14:48:42
Просмотры: 38.3K
Голосов: 8

Я использую get_posts, но мне нужно уточнить запрос на основе записей, где определенный meta_key имеет определенное значение.

Что-то вроде этого

<?php 
// Например, location=berkshire
$reviews = get_posts('post_type=reviews&numberposts=-1');

Возможно ли это сделать и если да, то как?

Замечательно

0
Все ответы на вопрос 2
0
19

Функция 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 есть множество примеров в разделе о произвольных полях.

8 июл. 2012 г. 07:47:08
0

Да, это возможно. Используйте параметры 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 );
13 окт. 2011 г. 16:31:14