wp_create_nonce()


WordPressのwp_create_nonce()関数は、セキュリティ目的で使用される一時的なトークン(nonce)を生成するために使用されます。このトークンは主にフォーム送信やAjaxリクエストの検証に用いられます。

構文

wp_create_nonce( string $action = -1 );
  • $action (string|int) — トークンを作成する際のオプションのアクション名または識別子です。省略時はデフォルトで-1が使用されます。

使用例

例 1: シンプルなnonceの生成

指定したアクションをもとにnonceを生成します。

<?php $nonce = wp_create_nonce( 'my_action' ); ?>

例 2: フォームでnonceを利用

フォーム内にnonceを埋め込みます。

<?php echo '<input type="hidden" name="my_nonce" value="' . wp_create_nonce( 'form_action' ) . '">'; ?>

例 3: Ajaxリクエストでnonceを生成

JavaScriptに渡すためのnonceを生成します。

<?php 
$ajax_nonce = wp_create_nonce( 'ajax_action' );
echo '<script>var ajax_nonce = "' . $ajax_nonce . '";</script>';
?>

例 4: URLにnonceを付加

リンクにnonceを含めて安全性を高めます。

<?php 
$url = add_query_arg( '_wpnonce', wp_create_nonce( 'url_action' ), home_url( '/example-page/' ) );
echo '<a href="' . $url . '">リンク</a>';
?>

例 5: 特定条件下でnonceを生成

条件に応じて異なるnonceを生成します。

<?php 
if ( current_user_can( 'edit_posts' ) ) {
    $nonce = wp_create_nonce( 'edit_posts_action' );
    echo '管理者用nonce: ' . $nonce;
} else {
    $nonce = wp_create_nonce( 'guest_action' );
    echo 'ゲスト用nonce: ' . $nonce;
}
?>

注意事項

  • nonceはセキュリティを完全に保証するものではありませんが、リクエストの正当性をある程度検証するのに役立ちます。
  • 生成したnonceは同じアクション名であれば一定時間(デフォルトで12時間)の間有効です。

関連機能: