需要进行哪些编辑才能使Jetpack Top-Posts显示所有时间的头条信息,而不仅仅是最近2天?

时间:2019-01-31 13:35:54

标签: wordpress jetpack

我想向我的网站添加一个小部件,以显示历史上浏览次数最多的帖子。到目前为止,我尝试过的每个插件似乎都使用自己的数据库,该数据库在安装时初始化,而不是使用内部统计信息。 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的情况下,当您请求10个帖子时,只会显示前6个帖子。如果我将$days设置为99999之类的大数字,那么它将报告没有帖子显示$count为4或更少,如果$count为10则仅显示两个帖子。

我还要补充一点,按照书面规定,您实际上不能设置$days=-1并使其起作用,因为$post_view_posts使用绝对值。当然,摆脱absint很容易,但这不能解决返回错误数目的帖子的怪异问题……

那么...有人知道正确的编辑方法吗?

1 个答案:

答案 0 :(得分:0)

您可以使用过滤器,而不必尝试修改只会在更新时被替换的小部件。请注意,-1是您要返回的天数不受限制的内容。

function jetpackme_top_posts_timeframe() {
return '-1';
}
add_filter( 'jetpack_top_posts_days', 'jetpackme_top_posts_timeframe' );

将其放在您的子主题的functions.php中。

参考:https://jetpack.com/2016/01/12/hooks-customize-top-posts-pages-widget/