Thật khó để trả lời cụ thể câu hỏi của bạn. Phần đầu tiên là dễ dàng mặc dù. Gần đây tôi đã làm một cái gì đó tương tự trên stackoverflow
Các khóa meta được so sánh và khớp chính xác. WP_Query
không có cách nào để điều chỉnh hành vi này với một tham số đơn giản, nhưng chúng ta luôn có thể tự giới thiệu một hành vi và sau đó điều chỉnh posts_where
mệnh đề để LIKE
so sánh trên các khóa meta.
BỘ LỌC
Đây chỉ là một bộ lọc cơ bản, điều chỉnh nó khi cần thiết.
add_filter( 'posts_where', function ( $where, \WP_Query $q )
{
// Check for our custom query var
if ( true !== $q->get( 'wildcard_on_key' ) )
return $where;
// Lets filter the clause
$where = str_replace( 'meta_key =', 'meta_key LIKE', $where );
return $where;
}, 10, 2 );
Như bạn có thể thấy, bộ lọc chỉ được kích hoạt khi chúng ta đặt tham số tùy chỉnh mới, wildcard_on_key
thành true
. Khi kiểm tra này, chúng ta chỉ cần thay đổi bộ =
so sánh thành bộ LIKE
so sánh
Chỉ cần một lưu ý về điều này, các LIKE
so sánh vốn đã đắt hơn để chạy các so sánh khác
NHANH
Bạn chỉ có thể truy vấn các bài đăng của mình như sau để có được tất cả các bài đăng có khóa meta like_status_{user_id}
$args = [
'wildcard_on_key' => true,
'meta_query' => [
[
'key' => 'like_status_',
'value' => 1,
]
]
];
$query = new WP_Query( $args );
CÂU HỎI KHÁC
Các trường tùy chỉnh không có tác động đến hiệu suất, bạn có thể đọc bài viết của tôi về chủ đề này ở đây . Tuy nhiên tôi gặp rắc rối khi bạn nói rằng mỗi bài đăng có thể có hàng trăm hoặc hàng nghìn lượt thích. Điều này có thể ảnh hưởng đến bạn về hiệu suất nhận và lưu trữ một lượng lớn dữ liệu trường tùy chỉnh như vậy. Nó cũng có thể làm tắc nghẽn db của bạn với một lượng lớn dữ liệu trường tùy chỉnh không cần thiết khiến cho việc bảo trì khá khó khăn.
Tôi không phải là một fan hâm mộ lớn của việc lưu trữ dữ liệu tuần tự trong các trường tùy chỉnh vì người ta không thể tìm kiếm hoặc đặt hàng theo dữ liệu được tuần tự hóa. Tuy nhiên, tôi sẽ đề nghị lưu trữ tất cả ID người dùng trong một mảng dưới một trường tùy chỉnh. Bạn chỉ có thể cập nhật mảng với ID người dùng khi người dùng thích một bài đăng. Lấy dữ liệu trường tùy chỉnh và lặp qua mảng ID và làm điều gì đó với ID thật dễ dàng. Chỉ cần nhìn vàoget_post_meta()
Cập nhật một lĩnh vực tùy chỉnh cũng dễ dàng. Đối với điều đó, bạn sẽ cần xem xét update_post_meta()
, tôi không biết cách bạn tạo các trường tùy chỉnh của mình, nhưng update_post_meta()
chắc chắn là thứ bạn muốn sử dụng.
Nếu bạn cần gửi email hoặc thông báo đẩy khi một trường tùy chỉnh được cập nhật, bạn có sẵn các móc nối sau để làm việc. ( Xem update_metadata()
để biết ngữ cảnh )
PHẦN KẾT LUẬN
Ngay trước khi tôi đăng bài này, một lần nữa, trước khi bạn đi theo lộ trình tuần tự, hãy đảm bảo rằng bạn sẽ không cần sắp xếp theo dữ liệu được sắp xếp hoặc tìm kiếm dữ liệu cụ thể bên trong dữ liệu được tuần tự hóa.