У меня есть сайт WordPress, который позволяет пользователю «лайкать» сообщения. Это добавляет к сообщению пользовательское поле с идентификатором пользователя, например:
add_post_meta($post_id, 'like', $user_id, false);
Таким образом, пост может закончиться чем-то вроде 100 разных ключей «Нравится» с идентификатором пользователя.
Поэтому я хочу вернуть таблицу лидеров самых активных пользователей на основе лайков. Поэтому я хотел бы запросить, что посмотрело на meta_key «как» для $user_id, которые появляются чаще всего. Это будет выглядеть примерно так. Очевидно, что сейчас это не работает.
$args = array(
'post_type' => 'post',
'meta_key' => 'likes',
'post_status' => 'publish',
'posts_per_page' => 20,
'orderby' => 'popularity', // This doesn't exist yet, but I wants it!
'order' => 'ASC',
'meta_query' => array(
array(
'key' => 'likes',
'value' => $user_id,
'compare' => '=',
)
)
);
$query = new WP_Query($args);
Это вообще возможно? Или лучше периодически получать все посты, суммировать лайки и кэшировать результаты?
Я знаю, что мог бы создать настраиваемое поле, которое увеличивалось бы по мере того, как оно нравилось человеку, но я бы предпочел придумать запрос для получения результатов в режиме реального времени (более надежный при удалении пользователя и т. д.).
Спасибо, Дрю.
orderby
meta_value_num
- person Mark   schedule 11.08.2013