如何在 WordPress 社区主题中显示总 Post 用户浏览量?
How to Show Total Post Views of User in WordPress community theme?
所以,我在这里为我的社区网站使用 Boombox 主题,我想显示来自用户的 "Total post reads/views",例如,A 用户有 10 post 并且每个 [=27] 有不同的视图=],我需要所有 A 的 post 的总视图。可以在wordpress平台上做吗?由于我在我的数据库 table 中找到的内容,我无法找到我可以 "play" 的任何相关字段。
我试图修改一个 update_post_meta 函数,试图在 function.php 文件上添加另一个条件,但它不起作用。
函数如下:
function boombox_update_post_total_view( $scale, $post_id ) {
if( absint( $scale ) > 0 ) {
$total = intval( boombox_get_post_meta( $post_id, 'total_views' ) );
$total += $scale;
update_post_meta( $post_id, 'total_views', $total);
}
}
add_action( 'boombox/view_total_updated', 'boombox_update_post_total_view', 10, 2 );
这是数据库 table 结构:
database table structure
谢谢。
注意:我什至不确定我是否编辑了正确的文件。
这适用于任何主题。
第 1 步:
在您的主题 function.php 文件中的以下块中添加此代码。
function getPostViews($postID){
$count_key = 'post_views_count';
$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 View";
}
return $count.' Views';
}
function setPostViews($postID) {
$count_key = 'post_views_count';
$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);
}
}
// Remove issues with prefetching adding extra views
remove_action( 'wp_head', 'adjacent_posts_rel_link_wp_head', 10, 0);
第 2 步: 将这行代码添加到 single.php 文件。请注意,它应该在循环内,你可以在 the_content()
:
之后添加它
setPostViews(get_the_ID());
例如应该是:
the_content(); setPostViews(get_the_ID());
第 3 步: 在要显示 post 的总浏览量的位置添加这行代码:
echo getPostViews(get_the_ID());
来源:https://www.themexpert.com/blog/track-display-post-views-in-wordpress
这是我现在使用的代码:)
<?php
$profile_id = bp_get_member_user_id();
$balance = mycred_get_users_balance( $profile_id );
$author_id = ''; // do stuff to get user ID
$author_posts = get_posts( array(
'author' => $profile_id
) );
$counter = 0; // needed to collect the total sum of views
foreach ( $author_posts as $post )
{
$views = absint( boombox_get_post_meta( $post->ID, 'total_views', true ) );
$counter += $views;
}
?>
所以,我在这里为我的社区网站使用 Boombox 主题,我想显示来自用户的 "Total post reads/views",例如,A 用户有 10 post 并且每个 [=27] 有不同的视图=],我需要所有 A 的 post 的总视图。可以在wordpress平台上做吗?由于我在我的数据库 table 中找到的内容,我无法找到我可以 "play" 的任何相关字段。
我试图修改一个 update_post_meta 函数,试图在 function.php 文件上添加另一个条件,但它不起作用。
函数如下:
function boombox_update_post_total_view( $scale, $post_id ) {
if( absint( $scale ) > 0 ) {
$total = intval( boombox_get_post_meta( $post_id, 'total_views' ) );
$total += $scale;
update_post_meta( $post_id, 'total_views', $total);
}
}
add_action( 'boombox/view_total_updated', 'boombox_update_post_total_view', 10, 2 );
这是数据库 table 结构: database table structure
谢谢。 注意:我什至不确定我是否编辑了正确的文件。
这适用于任何主题。
第 1 步: 在您的主题 function.php 文件中的以下块中添加此代码。
function getPostViews($postID){
$count_key = 'post_views_count';
$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 View";
}
return $count.' Views';
}
function setPostViews($postID) {
$count_key = 'post_views_count';
$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);
}
}
// Remove issues with prefetching adding extra views
remove_action( 'wp_head', 'adjacent_posts_rel_link_wp_head', 10, 0);
第 2 步: 将这行代码添加到 single.php 文件。请注意,它应该在循环内,你可以在 the_content()
:
setPostViews(get_the_ID());
例如应该是:
the_content(); setPostViews(get_the_ID());
第 3 步: 在要显示 post 的总浏览量的位置添加这行代码:
echo getPostViews(get_the_ID());
来源:https://www.themexpert.com/blog/track-display-post-views-in-wordpress
这是我现在使用的代码:)
<?php
$profile_id = bp_get_member_user_id();
$balance = mycred_get_users_balance( $profile_id );
$author_id = ''; // do stuff to get user ID
$author_posts = get_posts( array(
'author' => $profile_id
) );
$counter = 0; // needed to collect the total sum of views
foreach ( $author_posts as $post )
{
$views = absint( boombox_get_post_meta( $post->ID, 'total_views', true ) );
$counter += $views;
}
?>