在BBPress中添加话题(帖子)查看量计数器
翻译自这里,有一点修改
BBPress是一款WordPress论坛插件(如phpBB、Discuz!等)。尽管BBPress没有像phpBB和Discuz!那样多的功能,但是它们的SEO分数要高于两者,而且BBPress是免费的。
BBPress使用WordPress的固定链接,更亲和搜索引擎,很多站长都采用了bbPress作为他们的论坛软件。 在bbPress的帖子列表里,你一般能看到如下所示:
| 帖子(Topic) | 参与人数(Voices) | 回复(Posts) | 最后回复(Freshness) |
|---|---|---|---|
| An Topic Started by: Me |
2 | 3 | 1 minutes ago Me |
实际上并没有多少人关心有多少人回复了某个帖子,所以, 今天,我将向您展示如何将帖子查看量计数器添加到BBPress里。
首先,确保你已经安装了BBPress插件,你可以在这里下载BBPress插件。
1.添加计数器功能
打开你的主题(一般在“htdocs(或者类似的地方)\wp-content\themes\your-theme(你目前使用的主题)”)里的functions.php,添加以下代码(位置不限)(可以复制):
//把参与人数改成观看(点击)数量
//https://trickspanda.com/add-replies-topics-count-bbpress/
if( !function_exists('get_wpbbp_post_view') ) :
////////////////////////////////////////////////////////////////////////////////
// get bbpress topic view counter
// 获取 bbpress 帖子查看量计数器
////////////////////////////////////////////////////////////////////////////////
function get_wpbbp_post_view($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";
}
return $count;
}
function set_wpbbp_post_view($postID) {
$count_key = 'post_views_count';
$count = get_post_meta($postID, $count_key, true);
if( $count == '' ){
add_post_meta($postID, $count_key, '1');
} else {
$new_count = $count + 1;
update_post_meta($postID, $count_key, $new_count);
}
}
endif;
上面这段代码是干什么的?
这是添加查看计数器到主题元的功能。
2.将挂钩(Hook)动作添加到每个帖子上
然后,在新添加的代码下面添加以下代码:
if( !function_exists('add_wpbbp_topic_counter') ) :
////////////////////////////////////////////////////////////////////////////////
// init the view counter in bbpress single topic
// 在 bbpress 单个帖子中 初始化查看量计数器
////////////////////////////////////////////////////////////////////////////////
function add_wpbbp_topic_counter() {
global $wp_query;
$bbp = bbpress();
$active_topic = $bbp->current_topic_id;
set_wpbbp_post_view( $active_topic );
}
add_action('bbp_template_after_single_topic', 'add_wpbbp_topic_counter');
endif;
3.在模板中应用计数器
您可以在任何bbpress循环(Loop)中使用此代码:
<?php echo get_wpbbp_post_view( bbp_get_topic_id() ); ?>
在这里用我的论坛做例子,我想把“参与人数”替换成“查看量”:
| 帖子 | 查看 | 回复 | 最后回复 |
|---|---|---|---|
| A Topic 由 Me 发布 |
2 | 0 | 16 小时, 30 分钟前 Me |
使用bbPress的子模板方法,我在我的主题中创建了一个bbpress文件夹,并将loop-single-topic.php复制过去(该文件的位置:/wp-content/plugins/bbpress/templates/default/bbpress/loop-single-topic.php),然后编辑 mytheme(你的主题文件夹)/bbpress/loop-single-topic.php 第82行左右,从:
<?php bbp_topic_voice_count(); ?>
改为:
<?php echo get_wpbbp_post_view( bbp_get_topic_id() ); ?>
“查看量”就替代了“参与人数”的位置。
搞定!
如果你只使用bbPress的话,上述教程应该能完美运作(创建一片帖子,进入几次并查看外面的查看量是否有变化)。
但是,
BuddyPress 群组里的论坛部分 并不会运作,具体现象为:
- 点击任何帖子都不会增加查看量
若想修复,请重新打开你的主题里的functions.php,并找到: $active_topic = $bbp->current_topic_id; 改为: $active_topic_id = $bbp->topic_query->post->ID; 即可。
参考资料:
https://bbpress.org/forums/topic/view-count-in-bbpress-group-forum-doesnt-work/ http://www.magpress.com/blog/adding-topics-view-counter-in-bbpress/