私はWordpressの投票システムを書いています。ユーザーが既に投票したかどうかを確認し、彼/彼女にメッセージを見せる必要があります。しかし、私はそれがどのようにできるのか正確にはわからない!私の解決策の1つは、テーブル(wp_voters)を作成し、各ユーザーのIPアドレスとポーリングIDを入力することです。
$user_ip = $_SERVER['REMOTE_ADDR'];
しかし、実際にはうまくいきません。 1人のユーザーに対して、2つ以上のIPアドレスを割り当てます。どうやってこの問題に対処できますか?ありがとう、
WordPress でそのような機能のためのテーブルを作成することは効率的な動きではありません。私は以下のアプローチを使ってこれをすることを好むでしょう。
あなたの有権者情報のための カスタム投稿タイプ を作成してください。このために、 Generate WPポストタイプジェネレータ を試すことができます。
ユーザーがサイトにアクセスしたとき。 wp insert post
と add_post_meta
を使って ポストメタ でIPと評価を保存します。このようにして、バックエンドでもリストを見ることができます。
ユーザーがあなたのサイトを訪れるたびに、 WP Query を使ってそのIPを持つユーザーがいるかどうかチェックします。もしそれが存在すれば、情報を追加する必要はなく、それ以外の場合はステップ2で自分の情報を追加します。
これはあなたのユーザーのIPアドレスを取得する簡単な関数です。
function get_the_user_ip() {
if ( ! empty( $_SERVER['HTTP_CLIENT_IP'] ) ) {
//check ip from share internet
$ip = $_SERVER['HTTP_CLIENT_IP'];
} elseif ( ! empty( $_SERVER['HTTP_X_FORWARDED_FOR'] ) ) {
//to check ip is pass from proxy
$ip = $_SERVER['HTTP_X_FORWARDED_FOR'];
} else {
$ip = $_SERVER['REMOTE_ADDR'];
}
return $ip;
}
これでうまくいくことを願っています。