Я хочу добавить виджет на свой сайт, который показывает самые просматриваемые посты всех времен.Кажется, что каждый плагин, который я пробовал до сих пор, использует свою собственную базу данных, которая инициализируется при установке, а не использует внутреннюю статистику.Jetpack, похоже, хранит эту статистику, но его виджет топ-постов обеспечивает только последние 1-2 дня и не имеет встроенной опции для более длительных периодов времени.
Я пытался взломать виджет top-posts.php
, но с ограниченным успехом.Вот соответствующий раздел из моего файла:
/**
* Filter the number of days used to calculate Top Posts for the Top Posts widget.
* We do not recommend accessing more than 10 days of results at one.
* When more than 10 days of results are accessed at once, results should be cached via the WordPress transients API.
* Querying for -1 days will give results for an infinite number of days.
*
* @module widgets
*
* @since 3.9.3
*
* @param int 2 Number of days. Default is 2.
* @param array $args The widget arguments.
*/
$days = (int) apply_filters( 'jetpack_top_posts_days', 999999, $args );
/** Handling situations where the number of days makes no sense - allows for unlimited days where $days = -1 */
if ( 0 == $days || false == $days ) {
$days = 2;
}
$post_view_posts = stats_get_from_restapi( array(), 'top-posts?max=11&summarize=1&num=' . absint( $days ) );
Если я изменю значение по умолчанию с $days
на 10, тогда статистика будет считаться правильно за 10 дней.Но количество сообщений, которые на самом деле появляются, отличается от того, что запрашивается.При $days
= 10 отображаются только первые 6 сообщений, когда вы просите 10 из них.Если я установлю $days
на огромное число, например 99999, то оно сообщит, что нет записей, которые можно отобразить, если $count
равно 4 или меньше, и только два сообщения отображаются, если $count
равно 10.
Я должен также добавить, что, как написано, вы не можете установить $days=-1
и заставить его работать, потому что $post_view_posts
использует абсолютное значение.Конечно, от этого absint
легко избавиться, но это не решает эту причудливую проблему с возвратом неправильного числа сообщений ...
Итак ... кто-нибудь знает правильные правки, которые нужно потянутьэто выключено?