WP_NONCE_URL() │ WP 2.0.4
Функция WP_NONCE_URL()
добавляет специальный токен — nonce — к URL-адресу. Например, она может превратить URL http://example.com/url
в http://example.com/url?_wpnonce=9d6bd884a1
.
Эта функция предназначена только для отображения на экране, а не для использования в других PHP-функциях (например, при редиректе с помощью wp_redirect()
). Это связано с тем, что функция экранирует значение с помощью esc_html()
, чтобы избежать потенциальных проблем с безопасностью.
Производительность
- Использование функции один раз: ~0.000102 секунды (быстро)
- Использование функции 50000 раз: ~2.28 секунды (также быстро)
Возвращаемое значение
Функция возвращает строку — экранированный URL с добавленным действием nonce.
Синтаксис использования
wp_nonce_url( $actionurl, $action, $name );
- $actionurl (строка) (обязательный) — URL, к которому нужно добавить nonce.
- $action (число или строка) — Имя действия nonce. По умолчанию: -1
- $name (строка) — Имя nonce. По умолчанию: '_wpnonce'
Примеры использования
Пример 1: Базовый пример
echo wp_nonce_url( 'http://example.com/url' );
// вывод: http://example.com/url?_wpnonce=1ef8422137
echo wp_nonce_url( 'http://example.com/url?arg=data' );
// вывод: http://example.com/url?arg=data&_wpnonce=9d6bd884a1
Пример 2: Использование с уникальным именем nonce
echo wp_nonce_url( 'http://example.com/url', 'my_nonce' );
// вывод: http://example.com/url?_wpnonce=4a875e9c59
// затем проверьте URL
if( wp_verify_nonce( $_GET['_wpnonce'], 'my_nonce' ) ) {
echo "Проверка пройдена";
} else {
echo "Проверка не пройдена";
}
Пример 3: Добавление nonce к URL для использования в wp_redirect()
Результат работы функции wp_nonce_url()
предназначен только для вывода на экран, а не для использования внутри PHP. Если вы хотите добавить nonce к URL и использовать его в какой-либо функции (например, wp_redirect()
), вы можете сделать так:
$url = '/wp-admin/admin.php?page=foo';
$nonce = wp_create_nonce( 'my_nonce_key' ); // создаем nonce
$nonce_url = add_query_arg( [ '_wpnonce'=>$nonce ], $url );
echo $nonce_url; //> /wp-admin/admin.php?page=foo&_wpnonce=74c42a878c
Изменения
- С версии 2.0.4 — добавлено в WordPress.
Код функции
Вот как выглядит код функции wp_nonce_url
в файле wp-includes/functions.php
:
function wp_nonce_url( $actionurl, $action = -1, $name = '_wpnonce' ) {
$actionurl = str_replace( '&', '&', $actionurl );
return esc_html( add_query_arg( $name, wp_create_nonce( $action ), $actionurl ) );
}
Связанные функции
-
nonce (защита безопасности)
check_admin_referer()
check_ajax_referer()
wp_create_nonce()
wp_nonce_ays()
wp_nonce_field()
wp_referer_field()
wp_verify_nonce()
-
Безопасность сайта
balanceTags()
current_user_can()
force_balance_tags()
is_ssl()
wp_check_password()
wp_generate_password()
wp_hash_password()
wp_set_password()