Lọc WP_Query cho các bài đăng có giá trị meta nhất định


7

Làm cách nào để lọc WP_Query cho các bài đăng có một giá trị meta nhất định mà không cần sử dụng Truy vấn chọn tùy chỉnh?

Tôi có một loại bưu chính tùy chỉnh với khóa meta: "mở" và các tùy chọn giá trị meta: "có" hoặc "không".

Tôi chỉ muốn hiển thị các bài đăng với meta_value = yes, cho meta_key = "open".

function filter_where($where = '') {    

    $open = "yes";

    //$where .= " AND post_date > '" . date('Y-m-d', strtotime('-2 days')) . "'";
    return $where;
}
add_filter('posts_where', 'filter_where');

Bạn đang làm điều này trong một tập tin mẫu? Bạn có thể gửi mã đầy đủ của tập tin mẫu của bạn sau đó? Đây có phải là vòng lặp chính của trang này?
Jan Fabry

Câu trả lời:


11

Tôi không chắc chắn từ ngữ của bạn nếu bạn đã không thử nó với đối số truy vấn hoặc nó không hoạt động?

$the_query = new WP_Query(array( 'meta_key' => 'open', 'meta_value' => 'yes' ));

Thông số trường tùy chỉnh trong Codex.


Cảm ơn bạn đã trả lời nhanh chóng. Tôi đã thử điều đó, nhưng vì một số lý do, nó không hoạt động với tôi. Đối với, nó ném 404.
Henk

Bạn đã đặt mã ở đâu?
t31os

Tôi đặt nó trong một mảng $ args sau cài đặt $ paged của tôi: $ paged = (get_query_var ('paged'))? get_query_var ('phân trang'): 1; và trước: $ temp = $ wp_query; $ wp_query = null; $ wp_query = new WP_Query ($ args);
Henk

@Henk Jan vui lòng thêm mã vào câu hỏi của bạn, nhận xét không phù hợp với nó
Rarst

loại bài đăng tùy chỉnh của tôi đã không được đăng ký đúng cách trong cơ sở dữ liệu. Sau khi tôi sửa nó, giải pháp của bạn đã làm được. Cảm ơn.
Henk ngày

1
 $querystr = "
    SELECT wposts.* 
    FROM $wpdb->posts wposts, $wpdb->postmeta wpostmeta
    WHERE wposts.ID = wpostmeta.post_id 
    AND wpostmeta.meta_key = 'custom-key' 
    AND wposts.post_type = 'page' 
    ORDER BY wpostmeta.meta_value DESC
    ";

2
Một lời giải thích sẽ cho chúng tôi biết tại sao đây là một câu trả lời.
Brian Fegter

Nhân đôi điều đó. Ngoài ra: Sử dụng các $wpdbphương pháp khi thực hiện truy vấn.
kaiser
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.