好哇网

使用 WP User Frontend 用户心插件实现文章订阅功能

作者 WP User Frontend 2021-07-13 430

WP User Frontend插件是一个流行的前端用户中心插件,我们使用这个插件实现一个文章投稿功能,根据需要我们可以针对文章投稿功能收费,用户购买一个资源包后,可以发布若干篇文章到我们的网站。

那么,是否可以扩展一下,实现用户购买资源包后,可以阅读网站上的多少篇文章呢?一番测试之后,发现并没有太大难度。

实现文章订阅功能的思路和代码

要想和默认的付费文章发布功能一样,实现付费文章阅读功能,我们首先要能判断当前用户是否购买了有效的资源包,并且这个资源包没有过期。翻一下 WP User Fronted 插件的代码很容易找到。具体代码如下。

1
2
3
4
$current_user      = wpuf_get_user();
$user_subscription = new WPUF_User_Subscription($current_user);
$user_sub          = $user_subscription->current_pack();
$sub_id            = $current_user->subscription()->current_pack_id();

有了上面的代码,我们就可以使用 the_content Filter 来修改文章内容,对于需要付费阅读的文章,如果用户没有登录,或者没有有效的订阅包,给出相应的提示;如果用户有可用的订阅包,直接显示文章全文,完整代码如下。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
add_filter('the_content', function ($content)
{
    $current_user      = wpuf_get_user();
    $user_subscription = new WPUF_User_Subscription($current_user);
    $user_sub          = $user_subscription->current_pack();
    $sub_id            = $current_user->subscription()->current_pack_id();
 
    $is_paid_post      = get_post_meta(get_the_ID(), '_wpuf_is_paid_user', true) === 'on';
 
    // 非付费文章不做处理,直接返回
    if ( ! $is_paid_post) {
        return $content;
    }
 
    if ($sub_id) {
        // 有订阅包,并且已过期时,$subs_expired 为 true
        $subs_expired = $user_subscription->expired();
    } else {
        $subs_expired = false;
    }
 
    if ( ! is_user_logged_in()) {
        $filtered_content = '此文章需要登录后才能查看,请登录。';
    } else {
 
        if ($subs_expired) {
            $filtered_content = '此文章需要订阅才能查看,请订阅。';
        } else {
            $filtered_content = $content;
        }
 
    }
 
    return $filtered_content;
 
});

上面的代码中,并没有实现判断剩余付费文章数量和按文章付费的功能,根据 WP User Frontend 已有的功能,实现这两个功能估计也不会太难,有兴趣的朋友可以尝试一下。

发表评论

好哇网,每天提供1000+次下载,做你身边靠谱的下载站!

立刻探索下载

留言咨询