メシのタネ

Webプログラミング 備忘録

  • DOMをPHPで操作できたらいいよね

    そうだよね。そう思うよね。JavaScriptでやると、画面がガタついたりするもんね。そうならないようにする方法もあるかもしれないけど、僕はできませんので、サーバー側でなんとかできたらええなぁと思って挑戦したけど、できませんでしたよ。PHP標準でHTMLをDOMにできるらしい今、技[...]

    続きを読む
  • 設計書ってなんで書くの?

    設計書をなぜ書くのかから始めてかれこれ3年近くこの禅問答をやっているわけですが、いまだに答えは出ません。ただ、その禅問答をやる中で設計書に対する取り組み方は大きく変わったので、その一部でも書いていきたい。基本設計はとにもかくにも必要だと思う設計書はいらぬ!という話をよく聞くし、自分[...]

    続きを読む
  • 書ききってやる。

    久々に書いてみる。久々に文章を書くということをやってみようと思う。伝える作業を観察したいと思ったからそうしたいと考えた。情緒的な文章は基本的にゴミ箱にぽいしてきましたが、情緒的なのも自分だと思う。「文章をかくという作業は、とりもなおさず自分と自分をとりまく事物との距離を確認すること[...]

    続きを読む
  • 普通の会社で2年普通に働いて思う事

    えらい寒くなりました。文句言いながらも現職を続けて2017年12月1日にめでたく2年がたちました。分かりやすいが乱暴に言えばITドカタと呼ばれる業界に入って案件のヒエラルキーの無慈悲さを痛感しながらも、それでもしょうがないと頑張る人たちに心を打たれながら「じゃあ俺も」と頑張れない自分に挫折して、とあ[...]

    続きを読む
  • jQueryUiのDatepicker利用時にminDate設定するとバグる件

    題名の通りなんですが、DatepickerでminDate使うとバグります。また後でキャプチャ見て貰いますけど、灰色の部分が、minDateで設定した日付が反復して出るようになるんですね。こういうの気が付かない人がいるかも知れませんが、ChoromeでminDate設定してる人は気にしてみてくだ[...]

    続きを読む

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

nantokaganbatta1

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

だいじなとこ

Webフォームを作る

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

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

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

Webフォームを機能させる

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

Webフォームの作成方法

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

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

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

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

要点

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

</p>
<p>//Webフォーム側</p>
<p>wp_nonce_field('sendpost'); //これをフォームタグのどっかに入れてください。</p>
<p>fucitons.php //ここから関数書いてあるファイル</p>
<p>function hogehoge() {</p>
<p>     $postdata = sanitizepost($_POST);<br />
     //サニタイズが終わったデータを$postdataに入れてます。</p>
<p>     if(is_page('postpage')&amp;&amp;isset($postdata['_wpnonce'])&amp;&amp;wp_verify_nonce($postdata['_wpnonce'], 'sendpost')) {</p>
<p>          //なんかこうするとCSRFが防げるらしいです。</p>
<p>            if(empty($postdata[&quot;error&quot;])&amp;&amp;empty($postdata[&quot;empty&quot;])) {<br />
               // こんな感じでエラー判定してこの場合こっちが偽</p>
<p>            } else {</p>
<p>               //真の方には<br />
                    $userdata = $postdata;</p>
<p>                   $args = array(<br />
                  'user_login' =&gt; $userdata[&quot;user&quot;],<br />
                  'user_pass' =&gt; $userdata[&quot;pass&quot;],<br />
                  'user_email' =&gt; $userdata[&quot;mail&quot;],<br />
                  'user_url' =&gt; '',<br />
                  'user_nicename' =&gt; $userdata[&quot;user&quot;],<br />
                  'display_name' =&gt; $userdata[&quot;view_name&quot;],<br />
                  'user_registered' =&gt; date('Y-m-d H:i:s'),<br />
                  'nickname' =&gt; $userdata[&quot;user&quot;],<br />
                  'first_name' =&gt; '',<br />
                  'last_name' =&gt; '',<br />
                  'description' =&gt; $userdata[&quot;comment&quot;],<br />
                  'rich_editing' =&gt; true,<br />
                  'comment_shortcuts' =&gt; false,<br />
                  'admin_color' =&gt; 'fresh',<br />
                  'use_ssl' =&gt; 0,<br />
                  'show_admin_bar_front' =&gt; false,<br />
                  'role' =&gt; get_option('default_role')<br />
                  );<br />
                  wp_insert_user($args, false);</p>
<p>            }</p>
<p>}</p>
<p>add_action('template_redirect', 'hogehoge');</p>
<p>

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

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

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

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

wp_insert_user

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

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

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

wp_signon

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

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

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

</p>
<p>       $user = array(<br />
               &quot;user_login&quot; =&gt; &quot;testuser&quot;,<br />
               &quot;user_password&quot; =&gt; &quot;testpass&quot;,<br />
               &quot;remember&quot;   =&gt; true,<br />
       );<br />
       $res = wp_signon($user, false);<br />
       if(is_wp_error($res)) :</p>
<p>       endif;</p>
<p>

wp_signon CODEX記事

get_currentuserinfo

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

なので、

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

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

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

関連記事

コメントをお待ちしております