Есть ли бесплатный плагин или тема для WordPress, которые сортируют посты как «лучшие в этом году» и «лучшие в прошлом месяце» или «лучшие за 24 часа» на основе голосования?
Я использую плагин Vote It Up прямо сейчас. Но у него нет возможности сортировать сообщения как цикл.
Какие-либо предложения?
Попробуйте GD Star Rating — я почти уверен, что он хранит время голосования и поэтому может быть использован для этого — вам, вероятно, придется самостоятельно извлекать порядок.
http://www.gdstarrating.com/
И вам также нужно будет записывать время голосования, чтобы получить «Лучшее на этой неделе», «Лучшее в этом месяце»,… резюме.
Если вам нужны такие данные, конечно… 🙂
Пока плагин не переключится на хранение голосов по-другому, не будет хорошего способа сортировки на основе голосов.
Взгляните на строку из таблицы голосов.
Все голоса пользователей хранятся в единственном столбце (голоса), и MySQL не имеет надлежащего способа разделения, подсчета и упорядочения на основе этого столбца.
Возможно, какой-нибудь ниндзя MySQL сможет создать для этого процедуру/функцию, но это выходит за рамки моего ноу-хау в SQL.
Не уверен, почему автор решил хранить голоса таким образом, но с точки зрения сортировки результатов это плохое решение для проектирования БД (imo).
Я ценю, что на самом деле не затронул этот вопрос, но подумал, что было бы неплохо указать, что, хотя это может быть что-то простое в теории, есть веская причина, по которой автор еще не предоставил эту возможность с плагином — его БД дизайн делает сортировку на основе голосования чрезвычайно сложной (по крайней мере, на уровне SQL).
Это то, что я бы сделал, если бы писал такой плагин.
Используйте одну новую таблицу для хранения только голосов, всех голосов.
Вот некоторые мнимые данные в таблице.
Наряду с этим я бы использовал usermeta и postmeta для хранения подсчета голосов как для сообщений, так и для голосовавших пользователей.
Вот некоторые воображаемые метаданные, которые помогут визуализировать.
Таким образом, сообщения можно было бы сортировать на основе мета-значения, а дополнительное использование мета-таблиц означало бы быстрый доступ к функциям обновления и извлечения, таким как
get_user_meta
,get_post_meta
,update_post_meta
… и т. д. (я уверен, что вы поняли).Просто мысли вслух, потому что ваш вопрос заставил меня задуматься о том, как бы я сделал это по-другому..