WordPress 備忘録 | メシのタネ

nantokaganbatta1
このエントリーをはてなブックマークに追加

【WordPress】会員制Webサイトを作成方法

 2014/07/23

以前らーめん屋の情報共有するWebプログラムを作ろうとしましたが、
製作途中で終了しました。会員制機能の実装は終わってたんですけど
サービス出すのがいろいろ怖くて躊躇しちゃいました。
まぁ、私なんかがどうせWebサイト出しても、流行らないんですけどね…

だいじなとこ

Webフォームを作る

会員制サイトなのでフォームが必要になります。
私の場合は、ログインと会員登録フォームですね。

会員がらーめん屋の情報入力するフォームも作ってありますが、
こちらは会員制とするのにあまり関係ないのではぶきます。

とりあえず私は固定ページテンプレートにformつけた奴用意しましたが、
formがあれば良いので、別に方法は何でもいいです。

Webフォームを機能させる

で、この固定ページにプログラムを入れていきます。
functionsを別に用意して定義しておいた方が
めっちゃくちゃにならなくて良いかも知れませんけど、
面倒臭いなら、functionsに書けば良いと思います。

Webフォームの作成方法

そのまま書いてみようかと思ったけど、
物凄く長いし、説明するのが大変だし
ここで紹介しているので見てください。

↓のWebサイトのstep5~最後までです。あと8もこの場合は必要ないかもしれません。

WordPressで管理画面以外から投稿させる機能を作る

でもこれは、投稿なので、
会員制Webサイトの場合はwp_insert_postの所がwp_insert_userになります。
Form→プログラム
って流れの形をここを見て作れれば後は簡単だと思います。

要点

うーん、あんまし自信ないですけど、
プログラムのヒント書いておきます。


//Webフォーム側

wp_nonce_field('sendpost'); //これをフォームタグのどっかに入れてください。


fucitons.php //ここから関数書いてあるファイル

function hogehoge() {

     $postdata = sanitizepost($_POST); 
     //サニタイズが終わったデータを$postdataに入れてます。


     if(is_page('postpage')&&isset($postdata['_wpnonce'])&&wp_verify_nonce($postdata['_wpnonce'], 'sendpost')) {

          //なんかこうするとCSRFが防げるらしいです。

            if(empty($postdata["error"])&&empty($postdata["empty"])) {
               // こんな感じでエラー判定してこの場合こっちが偽
          
            } else {

               //真の方には
                    $userdata = $postdata;
                   
                   $args = array(
                  'user_login' => $userdata["user"],        
                  'user_pass' => $userdata["pass"],        
                  'user_email' => $userdata["mail"],        
                  'user_url' => '',        
                  'user_nicename' => $userdata["user"],        
                  'display_name' => $userdata["view_name"],        
                  'user_registered' => date('Y-m-d H:i:s'),        
                  'nickname' => $userdata["user"],        
                  'first_name' => '',        
                  'last_name' => '',        
                  'description' => $userdata["comment"],        
                  'rich_editing' => true,        
                  'comment_shortcuts' => false,        
                  'admin_color' => 'fresh',        
                  'use_ssl' => 0,        
                  'show_admin_bar_front' => false,        
                  'role' => get_option('default_role')        
                  );             
                  wp_insert_user($args, false);
               

            }


}

add_action('template_redirect', 'hogehoge');



こんな感じでやると良いんじゃないでしょうか。
あくまで参考程度に考えておいてもらって、
上のさっき紹介したWebサイトと比較しながら
プログラム書いてってもらえばいいと思います。

とりあえず、次から必要な関数を書いていきます。

会員制Webサイトに必要な関数

これが無いと会員制Webサイトが成り立たないって関数が3つくらいあります。
これらの使い方を覚えないと多分作る事ができないと思います。

wp_insert_user

この関数は、【ユーザー】→あなたのプロフィール
とか一覧からユーザー選択した時に更新かけるページにある内容を
パラメータ配列からDBに挿入することができます。

パラメータの値はこっちを参照

更新かける場合は、wp_update_userを使って下さい!
wp_insert_userは新規追加です

wp_signon

この関数は、user名とpassが合っていれば
ユーザー情報を返してくれる関数です。

配列に入力データなどを入れて
wp_signonすればいいと思います。

公式の例見るとこんな感じで書いてありますね。


       $user = array(
               "user_login" => "testuser", 
               "user_password" => "testpass",
               "remember"   => true,
       );
       $res = wp_signon($user, false);
       if(is_wp_error($res)) :

       endif;


wp_signon CODEX記事

get_currentuserinfo

ログインしている状態でこの関数を使うと、
ログインしているユーザーの状態を取得することができます。

なので、

      global $current_user;
      get_currentuserinfo();
      if($current_user->user_level == 10) :
          //とかやれば編集者の場合の表示が可能になります。
      endif;

使い方はここに書いてあります。
ユーザのレベルはここに書いてあります。

Webの会員制サイトってプログラムとか一杯で作るの難しそうに感じますが、
実際もう関数化されたプログラムがあるので、WordPressで作ればある程度簡単に作れるかもしれませんね。
またグループ機能だとかメッセージ機能だとか想定していない機能を実装するとかなると話は違ってくると思いますが・・・。


このエントリーをはてなブックマークに追加

コメント

"【WordPress】会員制Webサイトを作成方法"
でメシのタネのおすすめを検索したよ!

プログラミング備忘録 | メシのタネ