bbPress积分插件——Virtual Money

标签: , , ,

bbPress 简洁得有点儿过头了,连用户积分功能都没有,官网上貌似也找不到类似的插件。没办法,毛主席教导我们,自己动手,丰衣足食,自己写一个插件吧。

先在 bbPress 的 my-plugins 文件夹中新建一个 virtual-money 文件夹,再新建一个 virtual-money.php 文件,然后加上插件的说明,让 bbPress 显示作者和用途:

/*
Plugin Name: Virtual Money
Plugin URI: https://demon.tw/my-work/bbpress-pluginvirtual-money.html
Description: add virtual money for bbPress
Author: Demon
Author URI: https://demon.tw/
Version: 0.1
*/

这是 bbPress 插件主文件必要的注释,没有打上是无法被读取的喔!接着加上我们的 hook 函数:

if ( is_topic() ) { // 判断是否为主题,不是则不启动显示货币功能
    add_filter('post_author_title_link', 'vm_show', 10, 2);
    add_filter('post_author_title', 'vm_show', 10, 2);
}

add_action('bb_new_post', 'vm_add_money'); // 回帖加金币
add_action('bb_delete_post', 'vm_sub_money'); // 删帖减金币

然后是各 hook 函数的定义:

function vm_add_money( $post_id ) {
    $user_id = bb_get_current_user_info( 'id' ); // 取得用户的UID
    $user = bb_get_user( $user_id ); // 取得用户信息
    $money = (int) $user->money; // 取得 Money 这个 Meta 值(我们自行新增用于纪录货币的字段)
    $post = bb_get_post( $post_id ); //取得帖子信息

    if ( $post->post_position == 1 ) { // 发表帖子
        $money += 5; // 金币+5
    } else if( $post->post_position > 1 ) { // 回复帖子
        $money += 1; // 金币+1
    }

    bb_update_meta( $user_id, 'money', $money, 'user' ); //更新 Money 这个 Meta 值
}

vm_sub_money 的定义和 vm_add_money 的类似,只不过加号变成了减号,就不贴出来了。vm_show 函数:

function vm_show( $text, $post_id = 0 ) {
    // $post_id 由被 hook 的 post_author_title 函数传入,不一定是 0
    if( !$post_id ) return $text;

    $user_id = get_post_author_id( $post_id ); // 取得用户的UID
    $user = bb_get_user( $user_id ); // 取得用户信息

    if ( $user_id && !isset($user->money) ) { // 如果使用者的 Money 值还未被设定,则预设为 0
        bb_update_meta( $user_id, 'money', 0, 'user' );
    }

    $money = (int) $user->money; // 确保取得的Money值为数值
    $money = "<div>金币: {$money}个</div>";

    return $text . $money; //加上显示金币的 hmtl 让 bbPress 继续处理
}

插件效果展示( demo ):http://vbs.demon.tw/topic.php?id=1

下面提供插件完整版下载,解压后上传到 bbPress 的 my-plugins 文件夹,然后在后台启用即可。

[download id=63]

赞赏

微信赞赏支付宝赞赏

随机文章:

  1. EditPlus注册机及其算法
  2. 没有找到msgmanage.dll
  3. PT作弊的几种方法
  4. JavaScript 类型的包装对象(Typed Wrappers)
  5. 用JavaScript实现Bencode算法

11 条评论 发表在“bbPress积分插件——Virtual Money”上

  1. yexingzhe说道:

    真牛,积分插件有的~忘了叫啥了

  2. 小木木说道:

    不错!

  3. 哈拉西说道:

    希望做着能多找找BUG 嘿嘿

    弄好了 俺们再试用 支持作者感谢作者

  4. 拉拉说道:

    下来seesee!

  5. 学习中说道:

    很需要啊

  6. 学习中说道:

    为什么回复了还是看不见

  7. 我擦说道:

    一个评论审核,完全无法下载了。。坑爹了。。。

  8. Dwayne说道:

    Demon,你的积分插件,如何让金币使用呢?比如说我要减少他的金币,如何操作,希望指点。

  9. arm linux说道:

    恩,好像放了好久了,加油

  10. zwj说道:

    在哪下载?

留下回复