Создаёт скрытое поле <input type="hidden" />
, содержащее защитный ключ nonce. Также позволяет добавить второе скрытое поле с реферером.
wp_nonce_field( $action = -1, $name = '_wpnonce', $referer = true, $echo = true )
- $action
- (строка|целое) Ключ, описывающий действие, на основе которого будет создано одноразовое число. Обратите внимание, что рекомендуется подробно описывать действие. Например, если вы хотите сохранить настройки определённого поста, то значение
$action
может быть например'save-post-' . $post_id
. - $name
- (строка) Атрибут
name
скрытого поля. - $referer
- (логическое) Нужно ли добавлять ещё одно скрытое поле «_wp_http_referer», содержащее
$_SERVER['REQUEST_URI']
текущей страницы. - $echo
- (логическое)
true
– вывести поле (по умолчанию),false
– возвратить.
Пример
В качестве примера давайте выведу форму и туда сразу же добавлю скрытое поле с одноразовым числом nonce.
Ну например можем предположить, что мы обновляем какой-то пост во фронтенде.
echo '<form action="save.php" method="POST"> <!-- тут будут ещё какие-либо другие поля ... --> <input type="hidden" name="post_id" value="' . $post_id . '" /> ' . wp_nonce_field( 'save-post-' . $post_id, 'true_nonce', true, false ) . ' </form>';
И соответственно валидация одноразового числа в файле save.php
будет выглядеть примерно следующим образом:
if( isset( $_POST[ 'true_nonce' ] ) && wp_verify_nonce( $_POST[ 'true_nonce' ], 'save-post-' . $_POST[ 'post_id' ] ) { // проверка прошла успешно, делаем дела }
Для проверки мы использовали функцию wp_verify_nonce(), ну и реферер вы можете проверить, взяв его из $_POST[ '_wp_http_referer' ]
.