首頁  >  問答  >  主體

WordPress 如何使用元查詢跨多種貼文類型查詢

我遇到了三個相當複雜的問題。首先,我有兩種自訂貼文類型:一種用於部門,一種用於員工。在員工中,您可以為每個員工選擇各種職位/欄位(標記為「附加角色」),但​​我需要的兩個是「員工」和「圖書館」。

我需要的第一個詢問是屬於任何部門的所有員工、屬於員工的員工或屬於圖書館的員工。有些員工只是其中之一,或是三者的組合。

接下來的兩個稍微簡單。我只對僅是職員(不屬於某個部門)或僅是圖書館(也不屬於某個部門)的員工進行一次查詢。

我一直在編寫和重寫這些查詢,但沒有任何進展。我認為需要一些我無法弄清楚的 SQL 命令。我將分享我的最新迭代。

對於第一個查詢(部門、員工或圖書館的員工):

$args = array(
    'post_type'   => 'employee',
    'post_status' => 'publish',
    'posts_per_page'  => '-1',
    'orderby'   => 'meta_value',
    'meta_key'  => 'last_name',
    'order'     => 'ASC',
    'meta_query' => array(
        array(
            'key'     => 'additional_roles',
            'value'   => array('staff', 'library'),
            'compare' => 'IN',
        ),
    ),
);
$query = new WP_Query($args);

第二個(僅限工作人員)

$args = array(
    'post_type' => 'employee',
    'post_status' => 'publish',
    'posts_per_page' => '-1',
    'meta_key' => 'additional_roles',
    'meta_value' => 'staff',
);
$query = new WP_Query($args);

圖書館的查詢與職員相同,只是meta_value是'library'。我知道第一個不應該工作,因為它沒有連接到部門 cpt,但不知道該怎麼做。但我不確定為什麼其他兩個不起作用。目前我沒有收到任何帖子返回。

我希望我已經解釋得夠好了。如果需要的話,我很樂意分享更多。謝謝!

P粉170858678P粉170858678277 天前356

全部回覆(1)我來回復

  • P粉200138510

    P粉2001385102024-01-17 13:10:46

    posts_per_page 是一個INT(您提供一個字串)

    $args = array(
        'post_type'   => 'employee',
        'post_status' => 'publish',
        'posts_per_page'  => -1,
        'orderby'   => 'meta_value',
        'meta_key'  => 'last_name',
        'order'     => 'ASC',
        'meta_query' => array(
            'relation' => 'AND',
            array(
                'key'     => 'additional_roles',
                'value'   => array('staff', 'library'),
                'compare' => 'IN',
            ),
            array(
                'key' => 'department',
                'compare' => 'EXISTS',
            ),
        ),
    );
    $first_query = new WP_Query($args);
    
    $staff_args = array(
        'post_type' => 'employee',
        'post_status' => 'publish',
        'posts_per_page' => -1,
        'meta_key' => 'additional_roles',
        'meta_value' => 'staff',
    );
    $staff_query = new WP_Query($staff_args);
    
    $library_args = array(
        'post_type' => 'employee',
        'post_status' => 'publish',
        'posts_per_page' => -1,
        'meta_key' => 'additional_roles',
        'meta_value' => 'library',
    );
    $library_query = new WP_Query($library_args);

    我還沒有測試過這段程式碼。讓我知道這是否有幫助

    回覆
    0
  • 取消回覆