Как я могу получить все страницы, которые содержат один и тот же мета-ключ?

Я хочу захватить все страницы Wordpress, которые включают мета-ключ basePrice, независимо от мета-значения.

Когда я пытаюсь сделать простой get_pages(), возвращается пустой массив. Согласно документам Wordpress, в нем говорится, что meta_value требует meta_key для работы, но не наоборот, так что это должно работать?

$basePrices = get_pages(array(
    'meta_key' => 'basePrice'
));

Как я могу получить все страницы с мета-ключом basePrice в моем массиве?


person Lee    schedule 01.12.2016    source источник


Ответы (1)


Во-первых, вы должны использовать объект запроса WordPress для таких сложных запросов. Это даст вам больше аргументов для игры.

Итак, вы можете сделать:

// Let's prepare our query:
$args = array(
   'post_type' => 'page',
   'posts_per_page' => -1,
   'meta_query' => array(
        array(
           'key' => 'basePrice',
           'compare' => 'EXISTS'
        ),
   )
);
$the_query = new WP_Query( $args );

// Array to save our matchs:
$pages = array();

// The Loop
if ( $the_query->have_posts() ) {

    while ( $the_query->have_posts() ) {

         // Let's take what we need, here the whole object but you can pick only what you need:
         $pages[] = $the_query->the_post();

    }

    // Reset our postdata:
    wp_reset_postdata();
}

Это должно работать нормально.

Другой способ использования get_pages() состоит в том, чтобы получить все страницы -> зациклить их -> создать оператор if get_post_meta(). Если есть значение, вы добавляете текущую страницу в свой массив. Но, как вы понимаете, вам нужно загрузить все страницы, а не нужно.

Надеюсь, это поможет,

person 2Fwebd    schedule 01.12.2016