分享WP资源
是件美好的事情

WordPress纯代码实现邀请码功能

腾讯云限时秒杀活动

网站实现邀请码功能有很多很多用处,具体什么用处,相信大家都知道,就不多说了,直接说怎么实现吧。以下代码来自 @阿树工作室 

思路:

  1. 需要新建一个数据表来保存邀请码。
  2. 后台需要两个页面:邀请码列表、添加邀请码。
  3. 添加邀请码的时候需要能设置前缀,一次生成多个邀请码,邀请码长度可自定义,每个邀请码使用次数可设置。

数据表

code:邀请码、max:邀请码使用次数、users:使用这个验证码的所有用户、status:验证码是否可用。

数据库操作

数据库操作部分代码包括: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(!emptyempty($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. 增加邀请码

2. 邀请码列表


上面范例代码,仅做参考使用,可根据实际自行优化,具体如何使用邀请码也请自行斟酌。

后记

阿树得空的时候,写了一个验证码插件,发布在了github上,有需要的朋友可直接下载使用。
https://github.com/ashuwp/Ashuwp_Invitaton_Code

阿树将插件发布在了worpdress官网,在wordpress官网搜索ashuwp-invitaion-code即可找到。
地址:https://wordpress.org/plugins/ashuwp-invitaion-code/

后记的后记

已经二年多没有更新了,在WordPress插件上一直到今才几百个下载量,只能嘿嘿了。

 收藏 (0) 打赏

您可以选择一种方式赞助本站

支付宝扫一扫赞助

微信钱包扫描赞助

未经允许不得转载:莲花不妖 » WordPress纯代码实现邀请码功能
分享到: 生成海报

登录

忘记密码 ?

您也可以使用第三方帐号快捷登录