Ashuwp invitaion code - 邀請碼生成器

    簡單實用的wordpress邀請碼、注冊碼生成器

    Ashuwp_Invitation_Code是一個wordpress插件,它有助于為您的網站添加邀請代碼。 wordpress用戶還可以配合一些日志限制訪問代碼來做一個付費閱讀網站。

    要使用此插件需要開啟wordpress的注冊功能。

    代碼版

    純代碼實現邀請碼 ?? 的思路:

    1. 需要新建一個數據表來保存邀請碼。
    2. 后臺需要兩個頁面:邀請碼列表、添加邀請碼。
    3. 添加邀請碼的時候需要能設置前綴,一次生成多個邀請碼,邀請碼長度可自定義,每個邀請碼使用次數可設置。

    數據表

    code:邀請碼、max:邀請碼使用次數、users:使用這個驗證碼的所有用戶、status:驗證碼是否可用。

    Ashuwp invitaion code - 邀請碼生成器

    數據庫操作

    數據庫操作部分代碼包括:1. 建立數據庫。2.對數據的獲取、增加、刪除、更改等操作。

    <?php
    //第一次啟用主題時執行
    function ashuwp_load_theme() {
      global $pagenow;
      if ( is_admin() && 'themes.php' == $pagenow && isset( $_GET['activated'] ) ){
        ashuwp_invitation_code_install();
      }
    }
    add_action( 'load-themes.php', 'ashuwp_load_theme' );
    //建立數據表
    function ashuwp_invitation_code_install(){
      global $wpdb;
      $table_name = $wpdb->prefix . 'invitation_code';
      if( $wpdb->get_var("SHOW TABLES LIKE '$table_name'") != $table_name ) :
        $sql = " CREATE TABLE `".$wpdb->prefix."invitation_code` (
          `id` BIGINT NOT NULL AUTO_INCREMENT PRIMARY KEY ,
          `code` varchar(40),
          `max` INT NOT NULL,
          `users` varchar(20),
          `status` tinyint
          ) ENGINE = MYISAM DEFAULT CHARSET=utf8;";
        require_once(ABSPATH . 'wp-admin/includes/upgrade.php');
        dbDelta($sql);
      endif;
    }
    //插入數據
    function ashuwp_insert_invitation_code( $code, $max = 1, $users, $status){
      global $wpdb;
      if($code==''){
        return false;
      }
      $code = trim($code);
      $code_exists = ashuwp_check_invitation_code($code);
      if(!$code_exists){
        $insert = "insert into ".$wpdb->prefix."invitation_code (code,max,users,status) values( '$code', '$max', '','1')";
        $wpdb->query($insert);
        return true;
      }else{
        return false;
      }
    }
    //檢查邀請碼是否已存在
    function ashuwp_check_invitation_code( $code ){
      global $wpdb;
      $sql = "select * from ".$wpdb->prefix."invitation_code where code='$code'";
      $result = $wpdb->get_results($sql);
      if(!empty($result)){
        return true;
      }else{
        return false;
      }
    }
    //獲取邀請碼
    function ashuwp_get_invitation_code($per_page=50, $page=1){
      global $wpdb;
      $page = (int)$page;
      $per_page = (int)$per_page;
      if(!$page){
        $page = 1;
      }
      if(!$per_page){
        $per_page = 50;
      }
      $begin = $per_page*($page-1);
      $end = $per_page*$page;
      $sql = "select * from ".$wpdb->prefix."invitation_code limit $begin,$end";
      $results = $wpdb->get_results($sql,'ARRAY_A');
      return $results;
    }
    //邀請碼的刪除、啟用、禁用。
    function ashuwp_operation_invitation_code( $id, $action ){
      global $wpdb;
      $id = (int)$id;
      if(!$id){
        return false;
      }
      if(!in_array($action,array('delete','deactive','active'))){
        return false;
      }
      if($action =='delete'){
        $sql = "delete from ".$wpdb->prefix ."invitation_code where id='$id'";
      }
      if($action =='deactive'){
        $sql = "update ".$wpdb->prefix ."invitation_code set status=0 where id='$id'";
      }
      if($action =='active'){
        $sql = "update ".$wpdb->prefix ."invitation_code set status=1 where id='$id'";
      }
      $result = $wpdb->query($sql);
      if($result){
        return true;
      }else{
        return false;
      }
    }

    網站后臺
    網站后臺部分代碼包括:1. 邀請碼列表頁面。2. 邀請碼增加頁面。

    <?php
    class ashuwp_invitation_code_admin {
      static public $instance;
      public function __construct(){
        add_action( 'admin_menu', array(&$this, 'ashuwp_invitation_code_menu') );
      }
      function ashuwp_invitation_code_menu(){
        add_menu_page( '邀請碼', '邀請碼', 'manage_options', 'invitation_code', array(&$this, 'invitation_code_list'),'',27);
        add_submenu_page('invitation_code', '添加邀請碼', '添加邀請碼', 'manage_options', 'invitation_code_add', array(&$this, 'invitation_code_add'));
      }
      function invitation_code_list(){
        if( isset($_GET['code_action']) && in_array($_GET['code_action'],array('delete','deactive','active')) && isset($_GET['code_id']) ){
          $code_id = (int)$_GET['code_id'];
          if(!$code_id){
            return;
          }
          $result = ashuwp_operation_invitation_code( $code_id, $_GET['code_action'] );
        }
        $code_lists = ashuwp_get_invitation_code(999,1);
      ?>
        <div class="wrap">
          <h1 class="wp-heading-inline">邀請碼</h1>
          <a href="<?php echo admin_url( 'admin.php?page=invitation_code_add' ); ?>" class="page-title-action">添加</a>
          <hr class="wp-header-end">
          <?php
          if(isset($result)){
            if($result){
          ?>
          <div id="message" class="notice notice-success">操作成功。</div>
          <?php
            }else{
            ?>
            <div id="message" class="notice notice-error">操作失敗。</div>
            <?php
            }
          }
          ?>
          <ul class="subsubsub"><li class="all">全部<span class="count">(<?php echo count($code_lists); ?>)</span></ul>
          <table class="wp-list-table widefat fixed">
            <thead>
              <tr>
                <th scope="col">ID</th>
                <th scope="col">邀請碼</th>
                <th scope="col">統計(最大使用數/已使用)</th>
                <th scope="col">用戶</th>
                <th scope="col">操作</th>
              </tr>
            </thead>
            <tbody>
            <?php
            if($code_lists){
              foreach($code_lists as $code){
                $users = array();
                if(!empty($code['users'])){
                  $users = explode( ',', $code['users'] );
                }
                $used = count($users);
              ?>
              <tr>
                <td><?php echo $code['id']; ?></td>
                <td>
                  <?php echo $code['code']; ?>
                  <?php
                  if(empty($code['status']) || !$code['status']){
                    echo '-已禁用';
                  }
                  ?>
                </td>
                <td>
                  <?php echo $code['max'].'/'.$used; ?>
                </td>
                <td>
                  <?php
                  foreach( $users as $user_id ){
                    $user = get_user_by('id', $user_id);
                    if(!empty($user)){
                    ?>
                    <a href="<?php echo admin_url( 'user-edit.php?user_id='.$user->ID ); ?>"><?php echo $user->user_login; ?></a>,
                    <?php
                    }
                  }
                  ?>
                </td>
                <td>
                  <a href="<?php echo admin_url( 'admin.php?page=invitation_code&code_action=delete&code_id='.$code['id'] ); ?>">刪除</a>
                  <?php
                  if(empty($code['status']) || !$code['status']){
                  ?>
                  <a href="<?php echo admin_url( 'admin.php?page=invitation_code&code_action=active&code_id='.$code['id'] ); ?>">啟用</a>
                  <?php
                  }else{
                  ?>
                  <a href="<?php echo admin_url( 'admin.php?page=invitation_code&code_action=deactive&code_id='.$code['id'] ); ?>">禁用</a>
                  <?php
                  }
                  ?>
                </td>
              </tr>
              <?php
              }
            }
            ?>
            </tbody>
            <tfoot>
              <tr>
                <th scope="col">ID</th>
                <th scope="col">邀請碼</th>
                <th scope="col">統計</th>
                <th scope="col">用戶</th>
                <th scope="col">操作</th>
              </tr>
            </tfoot>
          </table>
          <div class="tablenav bottom">
            <div class="tablenav-pages">
              <span class="pagination-links">
              </span>
            </div>
          </div>
        </div>
      <?php
      }
      function invitation_code_add(){
        $data_codes = ashuwp_get_invitation_code(999,1);
        $code_list = array();
        foreach($data_codes as $code){
          $code_list[] = $code['code'];
        }
        if(isset($_REQUEST['submit']) && isset($_REQUEST['ashuwp_invitation_code_field']) && check_admin_referer('ashuwp_invitation_code_action', 'ashuwp_invitation_code_field') ) {
          $code_prefix = '';
          if(!empty($_POST['code_prefix'])){
            $code_prefix = trim($_POST['code_prefix']);
          }
          $code_length = '';
          if(!empty($_POST['code_length'])){
            $code_length = (int)$_POST['code_length'];
          }
          if(!$code_length){
            $code_length = 8;
          }
          $code_number = 1;
          if(!empty($_POST['code_number'])){
            $code_number = (int)$_POST['code_number'];
          }
          if(!$code_number){
            $code_number = 1;
          }
          $code_counter = '';
          if(!empty($_POST['code_counter'])){
            $code_counter = (int)$_POST['code_counter'];
          }
          if(!$code_counter){
            $code_counter = 1;
          }
          $i=1;
          $code_tem = array();
          while ( $i <= $code_number ){
            $tem = strtoupper( $code_prefix . wp_generate_password( $code_length, false ) );
            if(!in_array($tem,$code_list)){
              $i++;
              $code_tem[] = $tem;
              ashuwp_insert_invitation_code( $tem, $code_counter, '', 1);
            }
          }
        }
      ?>
        <div class="wrap">
          <h1 class="wp-heading-inline">添加邀請碼</h1>
          <a href="<?php echo admin_url( 'admin.php?page=invitation_code_add' ); ?>" class="page-title-action">添加</a>
          <hr class="wp-header-end">
          <?php
          if(!empty($code_tem)){
          ?>
          <div id="message" class="notice notice-success">
            <p>邀請碼添加成功:</p>
            <?php
            foreach($code_tem as $text){
              echo '<p>'.$text.'</p>';
            }
            ?>
          </div>
          <?php
          }
          ?>
          <form action="" method="post">
            <table class="form-table">
              <tbody>
                <tr>
                  <td><label for="code_prefix">邀請碼前綴</label></td>
                  <td>
                    <input type="text" id="code_prefix" name="code_prefix" class="regular-text"  value=""/>
                    <p class="description">前綴可不填。</p>
                  </td>
                </tr>
                <tr>
                  <td><label for="code_length">邀請碼字符長度</label></td>
                  <td>
                    <input type="text" id="code_length" name="code_length" class="regular-text"  value=""/>
                    <p class="description">字符長度不包括前綴,默認8個字符。</p>
                  </td>
                </tr>
                <tr>
                  <td><label for="code_number">邀請碼個數</label></td>
                  <td>
                    <input type="text" id="code_number" name="code_number" class="regular-text" value=""/>
                    <p class="description">本次生成多少個邀請碼,默認1個。</p>
                  </td>
                </tr>
                <tr>
                  <td><label for="code_counter">允許使用的次數</label></td>
                  <td>
                    <input type="text" id="code_counter" name="code_counter" class="regular-text"  value=""/>
                    <p class="description">每個邀請碼允許使用的次數,默認1次。</p>
                  </td>
                </tr>
              </tbody>
            </table>
            <p class="submit">
              <?php wp_nonce_field( 'ashuwp_invitation_code_action','ashuwp_invitation_code_field' ); ?>
              <input type="submit" name="submit" id="submit" class="button button-primary" value="生成邀請碼">
            </p>
          </form>
        </div>
      <?php
      }
    }
    $invitation_code = new ashuwp_invitation_code_admin();

    效果展示

    1. 增加邀請碼

    Ashuwp invitaion code - 邀請碼生成器

    2. 邀請碼列表

    Ashuwp invitaion code - 邀請碼生成器

    結束語

    上面范例代碼,僅做參考使用,可根據實際自行優化,具體如何使用邀請碼也請自行斟酌。

    相關推薦

    Ashuwp invitaion code - 邀請碼生成器-Npcink
    Ashuwp invitaion code - 邀請碼生成器-Npcink

    隱藏分類以及文章但登陸后可見 - WordPress教程

    下載權限
    查看
    • 免費下載
      評論并刷新后下載
      登錄后下載
    • {{attr.name}}:
    您當前的等級為
    登錄后免費下載登錄 小黑屋反思中,不準下載! 評論后刷新頁面下載評論 支付以后下載 請先登錄 您今天的下載次數(次)用完了,請明天再來 支付積分以后下載立即支付 支付以后下載立即支付 您當前的用戶組不允許下載升級會員
    您已獲得下載權限 您可以每天下載資源次,今日剩余
    插件

    Option Tree - Wordpress設置框架

    2020-1-7 19:42:40

    插件

    User Submitted Posts -前端編輯器

    2020-1-8 23:55:12

    ??
    Npcink上的部份代碼及教程來源于互聯網,僅供網友學習交流,若您喜歡本文可附上原文鏈接隨意轉載。
    無意侵害您的權益,請發送郵件至 1355471563#qq.com 或點擊右側 私信:Muze 反饋,我們將盡快處理。
    0 條回復 A文章作者 M管理員
      暫無討論,說說你的看法吧
    ?
    個人中心
    購物車
    優惠劵
    今日簽到
    有新私信 私信列表
    搜索
    主站蜘蛛池模板: 精品久久久久久中文字幕一区| 国产精品高清一区二区三区不卡| 久久免费区一区二区三波多野| 亚洲AV乱码一区二区三区林ゆな| 亚洲av高清在线观看一区二区 | 久久国产午夜一区二区福利| 一区二区三区免费在线视频 | 亚洲综合一区二区| 91大神在线精品视频一区| 日本一区二区视频| 亚洲av无码一区二区三区人妖 | 国产精品一区三区| 精品无人区一区二区三区| 天美传媒一区二区三区| 中文字幕亚洲一区| 亚洲一区二区三区丝袜| 久久99久久无码毛片一区二区| 精品无码av一区二区三区| 国产乱子伦一区二区三区| 亚洲一区二区三区无码中文字幕 | AV怡红院一区二区三区| 色狠狠AV一区二区三区| 国产一区二区三区手机在线观看| 免费av一区二区三区| 免费看无码自慰一区二区| 国产日韩精品一区二区三区在线| 无码国产精品一区二区免费式直播| 亚洲国产成人久久综合一区77| 99久久精品午夜一区二区| 中文字幕一区视频一线| 亚洲.国产.欧美一区二区三区| 中文字幕在线播放一区| 夜夜精品视频一区二区| 精品久久一区二区三区| 波多野结衣精品一区二区三区 | 国产精品一区在线麻豆| 国产午夜毛片一区二区三区| 怡红院一区二区在线观看| 秋霞无码一区二区| 三上悠亚亚洲一区高清| 免费人妻精品一区二区三区|