Hiện tại tôi có các bài viết liệt kê vòng lặp giữa hai ngày bằng posts_where
bộ lọc:
function filter_where( $where = '' ) {
$where .= " AND post_date >= '2000-01-01' AND post_date <= 2004-12-31' ";
return where;
}
add_filter('posts_where', 'filter_where');
query_posts($query_string);
while (have_posts()) :
the_post();
the_content();
endwhile;
Trong một cuộc meta_key
gọi, original_date
tôi đã lưu trữ một ngày khác nhau cho mỗi bài đăng mà tôi muốn sử dụng thay vì post_date
. Làm thế nào để tôi gọi chính xác điều này meta_key
vào $where
truy vấn để thực hiện cùng mục đích như post_date
?
$where .= " AND [meta_key=original_date] >= '2000-01-01' AND [meta_key=original_date] <= '2004-12-31' ";
Ví dụ, truy vấn SQL sau đây dường như không làm việc, mặc dù giá trị đúng ( 2001-10-29
, 2004-11-03
, vv) có mặt trong original_date
meta_key
các bài viết:
global $wpdb;
$where .= " AND (SELECT meta_value FROM $wpdb->postmeta WHERE meta_key='original_date' ) >= '2000-01-01' AND (SELECT meta_value FROM $wpdb->postmeta WHERE meta_key='original_date' ) <= '2004-12-31' ";
trong khi các mục sau hoạt động tốt trên cùng các bài đăng sử dụng post_date
tham chiếu của chúng:
$where .= " AND post_date >= '2000-01-01' AND post_date <= 2004-12-31' ";
Có lẽ meta_value
mảng cần phải được loại bỏ một số tài liệu không liên quan để định dạng kết quả thành dạng tương tự post_date
? Làm thế nào chúng ta có thể tiếp cận điều này?
$where .= " AND (($wpdb->postmeta.meta_key = 'original_date' AND $wpdb->postmeta.meta_value >= '2000-01-01') AND ($wpdb->postmeta.meta_key = 'original_date' AND $wpdb->postmeta.meta_value <= '2004-12-31')) ";