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

文 / @WordPress主题

使用WPUserFrontend插件实现文章投稿功能

我是一名小本本,我很喜欢用WordPress,最近学习了一个很有用的插件——WPUserFrontend插件。使用这个插件,我们可以轻松地实现文章投稿功能。如果需要,我们还可以对此功能进行收费处理。用户可以购买一个资源包,然后发布若干篇文章到我们的网站。

扩展实现文章订阅功能

如果可以实现用户购买资源包后,可以阅读网站上的多篇文章,那就更好了。经过一番测试,我发现扩展实现文章订阅功能并不难。

要实现付费文章阅读功能,我们需要判断当前用户是否购买了有效的资源包,并且这个资源包没有过期。WPUserFrontend插件的代码中有一段可以完成此功能的代码,具体如下。

  $current_user=wpuf_get_user();
  $user_subscription=newWPUF_User_Subscription($current_user);
  $user_sub=$user_subscription->current_pack();
  $sub_id=$current_user->subscription()->current_pack_id();

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

  add_filter('the_content',function($content)
      {
          $current_user=wpuf_get_user();
          $user_subscription=newWPUF_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;
      });
  

上面的代码中,并没有实现判断剩余付费文章数量和按文章付费的功能。根据WPUserFrontend已有的功能,实现这两个功能也并不是很难。如果你有兴趣,可以尝试一下。

添加UTHEME为好友
扫码添加UTHEME微信为好友
· 分享WordPress相关技术文章,主题上新与优惠动态早知道。
· 微信端最大WordPress社群,限时免费入群。