Несколько запросов в WordPress Custom Post - PullRequest
0 голосов
/ 14 октября 2019

У меня есть 2 CPT: местоположения и люди. На каждой странице местоположения У меня есть раздел, отображающий всех людей, работающих в этом месте.

Я бы хотел, чтобы они были организованы в два поля:

  • Группа сотрудников (радиокнопка с метками # 1-6)
  • Фамилия

Я думал, что нашел что-то, чтобы организовать их по группам сотрудников, но, похоже, это работает не на каждой странице.

<?php
/**
 * The Template for displaying single posts.
 */
?>

                <?php while (have_posts()):
    the_post(); ?>

                <?php
    /*
     *  Query posts for a relationship value.
     *  This method uses the meta_query LIKE to match the string "123" to the database value a:1:{i:0;s:3:"123";} (serialized array)
    */
    $staff = get_posts(
        array(
            'post_type' => 'people', 
            'posts_per_page' => - 1, 
            'meta_query' => array(
                'relation' => 'AND', 

                'location_clause' => array(
                    'key' => 'location', // name of custom field
                    'value' => '"' . get_the_ID() . '"', // matches exactly "123", not just 123. This prevents a match for "1234"
                    'compare' => 'LIKE',
                    ), 

                'order_clause' => array(
                    'key' => 'staff_group', 
                    'compare' => 'EXISTS'
                    )
            ), 
            'orderby' => array(
                'location_clause' => 'ASC', 
                'order_clause' => 'ASC')
                )
            );
?>

Я все еще в началеэтапы изучения кастомного WP, поэтому любая помощь будет высоко ценится!

1 Ответ

0 голосов
/ 15 октября 2019

Несколько вещей, которые выделяются:

'posts_per_page' => - 1, 

Я не думаю, что должно быть место между - и 1.

Кроме того, вместо:

'location_clause' => array(
    'key' => 'location',
    'value' => '"' . get_the_ID() . '"',
    'compare' => 'LIKE',
    ),

упростить этот запрос с помощью:

'location_clause' => array(
    'key' => 'location',
    'value' => get_the_ID(),
    ),

По умолчанию compare равно '='.

Наконец, вам не нужно:

'location_clause' => 'ASC',

потому что для местоположения должно быть только одно значение, верно?

В противном случае запрос выглядит звучащим. Итак, давайте очистим это и посмотрим, что мы получим:)

...