Изменение пользователем своих настроек с Frontend — wp_create_nonce()
Создал код - вставил его сразу в index.php - но не пойму как подключить wp_create_nonce();
<?php
$user_id = get_current_user_id();
function update_basic_user_meta() {
$user_id = get_current_user_id();
if( $_POST['grid_on'] != '' ){
update_user_meta( $user_id, 'grid_or_list', 0 );
}
if( $_POST['list_on'] != '' ){
update_user_meta( $user_id, 'grid_or_list', 1 );
}
}
update_basic_user_meta();
add_action('init', 'update_basic_user_meta');
?>
<form action="" method="POST">
<button name="grid_on" value="1" type="submit" >Grid</button>
<button name="list_on" value="2" type="submit" >List</button>
</form>
Суть nonce в том, что бы убедиться что запрос был послан именно с вашей формы.
Читайте доку, там все легко и с примерами...
https://developer.wordpress.org/themes/theme-security/using-nonces/#example
В этих примерах основной процесс одноразового номера:
Вот непосредственно пример использования wp_create_nonce
https://developer.wordpress.org/reference/functions/wp_create_nonce/#comment-689
Спасибо, разобрался из вашего примера
Полное решение
часть №1
// Код обновления данных с проверкой nonce $user_id = get_current_user_id(); if( !empty( $_POST['grid_on'] ) ) { if ( ! isset( $_POST['name_of_nonce_field'] ) || ! wp_verify_nonce( $_POST['name_of_nonce_field'], 'name_of_my_action' ) ) { echo "Wrong check form"; // wp_nonce_ays( '' ); // STOP query } $user_id = get_current_user_id(); if( $_POST['grid_on'] == 1 ){ update_user_meta( $user_id, 'grid_or_list', 0 ); } else if( $_POST['grid_on'] == 2 ){ update_user_meta( $user_id, 'grid_or_list', 1 ); } }часть №2
Отлично, рад слышать! )
<?php if( !empty( $_POST['grid_on'] ) ) { $user_id = get_current_user_id(); if( $_POST['grid_on'] == 1 ){ update_user_meta( $user_id, 'grid_or_list', 0 ); } else if( $_POST['list_on'] == 2 ){ update_user_meta( $user_id, 'grid_or_list', 1 ); } } ?> <form action="" method="POST"> <input name="grid_on" value="1" type="hidden"> <button type="submit">Grid</button> </form> <form action="" method="POST"> <input name="grid_on" value="2" type="hidden" >Grid</button> <button type="submit">List</button> </form>И где тут wp_create_nonce ?