Một số công việc đầu tiên về như bạn mong đợi:
= equals
!= does not equal
> greater than
>= greater than or equal to
< less than
<= less than or equal to
LIKE
và NOT LIKE
là các toán tử SQL cho phép bạn thêm các ký hiệu đại diện, vì vậy bạn có thể có một truy vấn meta trông như thế này:
array(
'key' => 'name',
'value' => 'Pat',
'compare' => 'LIKE'
)
Điều này sẽ trả về tất cả các bài đăng trong đó "tên" giá trị meta có chuỗi "Pat". Trong trường hợp này, "Pat" "Patricia" và "Patrick" sẽ được trả lại cho bạn. Có một lời giải thích hướng dẫn không phải WordPress ở đây .
Thêm ký tự đại diện %
là không cần thiết, bởi vì nó được thêm theo mặc định như @Herb đã nói trong câu trả lời dưới đây của anh ấy . Như thế này: $meta_value = '%' . like_escape( $meta_value ) . '%';
- xem nguồn .
IN
và NOT IN
chọn bất kỳ kết quả khớp nào trong (hoặc không nằm trong) mảng đã cho. Vì vậy, bạn có thể làm một cái gì đó như thế này:
array(
'key' => 'color',
'value' => array('red', 'green', 'blue')
'compare' => 'IN'
)
và nó sẽ nhận được tất cả các bài đăng có màu được đặt thành đỏ, xanh lá cây hoặc xanh dương. Sử dụng 'KHÔNG VÀO' sẽ ngược lại, bất kỳ bài đăng nào có giá trị được đặt thành bất kỳ thứ gì khác ngoài những gì trong mảng.
SQL được tạo cho cái này sẽ trông giống như thế này:
SELECT * FROM posts_meta WHERE value IN ("red", "green", "blue")
BETWEEN
và NOT BETWEEN
cho phép bạn xác định một phạm vi các giá trị có thể đúng và yêu cầu bạn đưa ra hai giá trị trong một mảng trong meta_query của bạn:
array(
'key' => 'price',
'value' => array(20,30)
'compare' => 'BETWEEN'
)
Điều này sẽ giúp bạn có tất cả các bài đăng có giá trong khoảng từ 20 đến 30. Người này đào sâu vào một ví dụ với ngày.
NOT EXISTS
giống như những gì nó phát ra - giá trị meta không được đặt hoặc được đặt thành giá trị null. Tất cả những gì bạn cần cho truy vấn đó là toán tử khóa và so sánh:
array(
'key' => 'price',
'compare' => 'NOT EXISTS'
)
Người này cần truy vấn các giá trị meta không tồn tại và cần chúng để chơi đẹp với người khác.
Hi vọng điêu nay co ich!
meta_query
mảng, các khóa của bạn không nên được thêm tiền tốmeta_
. Nếu bạn đang sử dụng$query->meta_key
,$query->meta_value
v.v. thì những thứ này vẫn nên giữ lại tiền tố.