この記事はブロックされています。続きを読みたい方はログインをして下さい。会員ではない方は新規会員登録をして下さい。


ワードプレスで会員制ポイントサイト作るための覚え書き その5 既読ページを保存するための新規テーブルを作成する方法

前回は省略されたmoreタグ以降に「続きを読む」などのリンクを表示し、非ログインユーザーと非会員向けにログインまたは新規会員フォームを提供するところまでやりました。

今回はポイントの保存と呼び出しの準備についてです。
前回はログインユーザーであれば無条件に記事を全文表示していましたが、これを改作してポイントがある場合にだけ全文を表示するようにします。そのためにはまず新規にテーブルを作成するところからです。

まずポイントですが保存先は「wp_usermeta」テーブルに保存します。

▼wp_usermetaテーブル

ワードプレスにはユーザー関連の拡張したデータを保存するための「wp_usermeta」テーブルというものが用意されています。
基本的なユーザー情報は「wp_users」テーブルに保存されていますが、このテーブルだけだと足りないことがあります。
例えば、住所や電話番号といった情報は「wp_users」にはありません。

テーブルは新規に作ってもいいのですが、ユーザー関連の情報については「wp_usermeta」テーブルがあるのでそれを利用します。メリットはユーザーを削除した場合、「wp_usermeta」テーブルのデータも連動して削除されることです。
これは投稿データの「wp_posts」と投稿に付随したデータ(カスタムフィールドなど)が保存される「wp_postmeta」の関係と似ています。

ただし、既読したページの情報を保存したテーブルは新規に作成した方が良さそうです。
例えば、一度読んだページに再度アクセスした際、既にポイントは引かれているので再度ポイントを引かれないようにするためには、既に読んだことをどこかに保存する必要があります。
(Cookieという方法もいいのですが、端末が異なるとCookieが保存されていないので二重に引かれることになります)

「wp_usermeta」テーブルに保存しても良いのですが、ユーザー数×ページIDの組合せでどんどんレコードが増えていってしまうので、「wp_usermeta」テーブルが肥大化することが予想されます。
そこで、新規に既読ページテーブルを作成し、そこに保存します。

ワードプレスで新規にテーブルを作る方法はそれほど難しくはありません。
プラグインであればプラグインが有効化された時にアクションフックで新規にテーブルを作成します。
しかし、今回はプラグインではないので「functions.php」でベタに実行します。

既読ページテーブル名は「wp_read_point」とします。
以下はサンプルです。テーマフォルダの「functions.php」に記述します。

関連記事