Truy vấn bài viết bằng ID phân loại tùy chỉnh


7

Tôi có một loại bài đăng tùy chỉnh được gọi portfoliovà phân loại tùy chỉnh được gọi build-type(đóng vai trò là danh mục)

Tôi đang cố gắng truy vấn các portfoliobài đăng bằng build-typeID, ví dụ: tất cả các bài đăng Danh mục đầu tư trong "Khách sạn" (id = 4 cho phân loại đó)

// gets the ID from a custom field to show posts on a specific page   
$buildType = get_post_meta($post->ID, 'build_type_id', true);
// run query
query_posts(array( 
    'post_type' => 'portfolio',
    'showposts' => -1,
    'tax_query' => array(
        'taxonomy' => 'build-type',
        'terms' => $buildType,
        'field' => 'term_id'
    ),
    'orderby' => 'title',
    'order' => 'ASC'
));

Hiện tại nó đang gọi tất cả các portfolio bài đăng và không chỉ những người có build-typeID

Đối với 'field' => 'term_id'tôi nên sử dụng term_id, tag_ID, idhay cái gì khác?

Bất cứ ai biết làm thế nào để làm việc này?

Cảm ơn trước!

Câu trả lời:


12

Lý do điều này không hoạt động là vì 'tax_query' cần phải là một mảng các mảng (khó hiểu, tôi biết).

...

'tax_query' => array(
    array(
        'taxonomy' => 'build-type',

...

Đó là cách đó để bạn có thể nhóm một vài quy tắc khác nhau lại với nhau.


Đẹp một Drew. Điều đó đã giải quyết nó. Đã đăng kịch bản cuối cùng trên Github gist.github.com/1275191
mattberridge

Chúc mừng! Đã dành hàng giờ từ ngân sách của khách hàng để giải quyết vấn đề nhỏ này :)
Tom

7

Drew đã đúng, tax-querycần phải là một mảng của mảng

Giải pháp cuối cùng là:

// gets the ID from a custom field to show posts on a specific page
$buildType = get_post_meta($post->ID, 'build_type_id', true);
// run query
query_posts(array( 
    'post_type' => 'portfolio',
    'showposts' => -1,
    'tax_query' => array(
        array(
            'taxonomy' => 'build-type',
            'terms' => $buildType,
            'field' => 'term_id',
        )
    ),
    'orderby' => 'title',
    'order' => 'ASC' )
);

Trên github ở đây:

https://gist.github.com/1275191

Cảm ơn!


Không chấp nhận câu trả lời của tôi và chấp nhận người đàn ông của bạn thực sự làm tổn thương ... làm tôi đau lòng. Nếu ai cần tôi, tôi sẽ ở trong phòng chờ.
Drew Gourley

Hah xin lỗi anh bạn. Tôi mới biết tất cả những điều này, không nhận ra bạn chỉ có thể có một câu trả lời. Tôi sẽ đánh dấu lại để bạn có thể mạo hiểm quay trở lại phòng chờ
mattberridge

Haha, không sao đâu, tôi chỉ nói đùa thôi - Nếu bạn muốn tự chấp nhận một câu trả lời hoàn toàn được phép, nhưng hãy chắc chắn Upvote câu trả lời của tôi để tôi ít nhất có được tình yêu.
Drew Gourley

0

Bạn cần tạo một mảng bên trong tax_query nơi bạn cũng có thể chọn toán tử. Ví dụ, một print_r của tax_query sẽ trông như thế này.

 Array
(
    [relation] => AND
    [0] => Array
        (
            [taxonomy] => build-type
            [terms] => Array
                (
                    [0] => term1
                    [1] => term2blabla
                )

            [field] => slug
            [operator] => IN
        )

    [1] => Array
        (
            [taxonomy] => another-taxonomie
            [terms] => Array
                (
                    [0] => term1
                    [1] => term2
                )

            [field] => slug
            [operator] => IN
        )

)

Tất nhiên bạn có thể thay đổi trường cho id nhưng tôi luôn sử dụng sên để giữ cho nó đơn giản hơn. Như bạn thấy bạn có thể truy vấn nhiều nguyên tắc phân loại như thế này.


-1

bạn không cần sử dụng tax_query, xóa nó và nối thêm phần sau:

term=>build-type,'build-type=>hotels' ví dụ.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.