[解決済み] WordPress: wp_create_nonce() がカスタムプラグインの内部に値を作成しない。
2022-03-12 07:23:28
質問
ユーザー登録のためのカスタムプラグインを以下の手順で作成しています。
HTMLフォームフィールドを作成するための関数
function render_registration_form() {
ob_start();
...
<input type="hidden" id="register_nonce" name="register_nonce" value="<?php wp_create_nonce('generate-nonce'); ?>" />
//Above line does not create a nonce at all
...
return ob_get_clean();
}
上記のフォームを表示するためのショートコードとして使用する関数です。
function custom_user_registration_form() {
//Render registration form only if user is not logged in already!
if(!is_user_logged_in()) {
$registration_enabled = get_option('users_can_register');
if($registration_enabled) {
$output = render_registration_form(); (written above)
} else {
$output = __('User registration is not enabled');
}
return $output;
} else {
return _e('You are already logged in!');
}
}
add_shortcode('register-user', 'custom_user_registration_form');
新しいユーザーを検証し、メタデータと一緒にデータベースに追加する関数です。
function validate_and_create_user() {
if(isset($_POST['txt_username']) && wp_verify_nonce($_POST['register_nonce'], 'register-nonce')) {
$user_data = array(
'user_login' => $loginid,
'user_pass' => $password,
'user_nicename' => $first_name,
'display_name' => $first_name . ' ' . $last_name,
'user_email' => $email,
'first_name' => $first_name,
'last_name' => $last_name,
'user_registered' => date('Y-m-d H:i:s'),
'role' => 'subscriber'
);
$new_user_id = wp_insert_user($user_data);
...
}
add_action('init', 'validate_and_create_user');
がないため
nonce
の値はフォームの内部で作成されるため、チェックボックスの
wp_verify_nonce($_POST['register_nonce'], 'register-nonce')
は常に失敗し、ユーザーデータはデータベースに保存されません。
によると https://codex.wordpress.org/Pluggable_Functions
WordPressコアにプラグイン可能な関数が追加されなくなりました。新しい関数はすべて出力にフィルタを使用し、同様の機能をオーバーライドできるようになりました。
私はWordPressの初心者です。どうすればいいのか見当もつきません。何か手助けがあれば、とても助かります。
解決方法は?
これを試してみてください。
wp_nonce_field('register_nonce');
を入力の代わりにしてください。
また、nonceを取得するためには、次のようにします。
$retrieved_nonce = $_REQUEST['_wpnonce'];
if (!wp_verify_nonce($retrieved_nonce, 'register_nonce')) die( 'Failed security check' );
関連
-
[解決済み] wp_dequeue_style が動作していないようです。
-
[解決済み] WordPress: wp_create_nonce() がカスタムプラグインの内部に値を作成しない。
-
[解決済み] Wordpressのプラグインディレクトリを取得する
-
[解決済み] WordPressのバージョンを確認するにはどうすればよいですか?
-
[解決済み] WordPressがプラグインをインストールするためにFTPの認証情報を要求してくる
-
[解決済み] WordPressで現在のページ名を取得するにはどうすればよいですか?
-
[解決済み] WordPressのapply_filters(...)って実際どうなの?
-
[解決済み] WordPressの相対URL
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み] wp_dequeue_style が動作していないようです。
-
[解決済み] WordPress: wp_create_nonce() がカスタムプラグインの内部に値を作成しない。
-
[解決済み] Wordpressのプラグインディレクトリを取得する
-
[解決済み] WordPressのバージョンを確認するにはどうすればよいですか?
-
[解決済み] WordPressがプラグインをインストールするためにFTPの認証情報を要求してくる
-
[解決済み] WordPressで現在のページ名を取得するにはどうすればよいですか?
-
[解決済み] WordPressのapply_filters(...)って実際どうなの?
-
[解決済み] WordPressの相対URL