如何每月为帖子视图构建(自定义)统计数据

时间:2019-04-02 作者:gordie

有人知道我如何编写代码来获得每月最多的浏览量(没有Jetpack),理想情况下不必创建新的DB表?

也许有一种聪明的方法可以仅使用后Meta和/或瞬态来实现这一点。

目前,i\'m storing an array of stat entries 作为post元,包含时间戳。每次更新meta时,我都会删除时间戳<;1个月。这是可行的,但我不确定这是否是一个好的解决方案。

有什么想法吗?

谢谢

2 个回复
最合适的回答,由SO网友:leymannx 整理而成

我想我会在现有插件的基础上构建这个插件来为我计数。我对Post Views Counter 因为它还允许您在WP_Query. 但是WP-PostViews 看起来也很有希望。选择一个。

接下来,我将从每月运行的WordPress cron事件中按视图计数查询帖子。我只需将结果保存/添加到选项API选项中,就像数组一样$data[INTEGER_YEAR][INTEGER_MONTH][INTEGER_POST_ID][INTEGER_VIEW_COUNT]. 每当我需要它在小部件中显示高分时,或者在任何地方,都可以使用它。

SO网友:Serkan Algur

您可以使用这些功能跟踪帖子视图。创建新文件并将其调用到functions.php

收集足够的数据后,可以为仪表板创建一个元框,并可以使用图表模块查看每月/每年的帖子视图等。

add_action( \'wp_head\', \'get_post_id\' );
function get_post_id() {
    $postID = get_the_ID();
    return $postID;
}

function getPostViews() {
    $postID    = get_post_id();
    $count_key = \'views\';
    $count     = get_post_meta( $postID, $count_key, true );
    if ( $count == \'\' ) {
        delete_post_meta( $postID, $count_key );
        add_post_meta( $postID, $count_key, \'0\' );
        return __( \'0\', \'sagive\' );
    }
    return number_format( $count, \'0\', \',\', \'.\' ) . __( \'\', \'sagive\' );
}


remove_action( \'wp_head\', \'adjacent_posts_rel_link_wp_head\', 10, 0 );
add_action( \'wp_head\', \'setPostViews\' );
function setPostViews() {
    if ( ! is_home() && ! is_robots() && ! is_user_logged_in() ) {
        $postID    = get_post_id();
        $count_key = \'views\';
        $count     = get_post_meta( $postID, $count_key, true );
        if ( $count == \'\' ) {
            $count = 0;
            delete_post_meta( $postID, $count_key );
            add_post_meta( $postID, $count_key, \'0\' );
        } else {
            $count++;
            update_post_meta( $postID, $count_key, $count );
        }
    }
}