自作プラグインをWordPrss公式サイトへ登録申請したら拒否された話

## Not using Nonces

nonceを使ってない。フォームの値を使用する時はnonce機能を利用してください。

詳しい解説はWordPress CODEXを読んでください。

要するに送られてきたPOST変数やGET変数が確実に正しいページから送られてきた事を確認する為の機能です。
一度しか使われない文字列を付与してフォーム送信時にその文字列が正しいかをチェックするみたいです。もし正しくない場合は404を返します。

[php]
<?php
/* 修正前 */
if( isset( $_POST["action"] ) && $_POST["action"] == "option_update" ) {
…(何らかの処理)…
}
?>
<form action="<?php echo esc_url( $_SERVER[‘REQUEST_URI’] ); ?>">

/* 修正後 */
<?php
if( isset( $_POST["action"] ) && $_POST["action"] == "option_update" ) {
// nonceの検証
$nonce = $_REQUEST[‘_wpnonce’];
if ( wp_verify_nonce( $nonce, ‘isp_users_guide’ ) ) {
…(何らかの処理)…
} else {
$msg = ‘セキュリティーチェック エラー’;
$alert = ‘alert-danger’;
}
}
?>
<form action="<?php echo wp_nonce_url( esc_url( $_SERVER[‘REQUEST_URI’] ), ‘isp_users_guide’ ); ?>">
[/php]

フォームデータを扱う前に『wp_verify_nonce()』関数でnonceをチェック。
formのactionに『wp_nonce_url()』関数でnonceを追加。

上記の2つの関数を使うだけです。

ちなみにAjaxを扱う時も、

[php]
<script type="text/javascript">
var ajax = "<?php echo wp_nonce_url( bloginfo( ‘wpurl’ ) . ‘/wp-admin/admin-ajax.php’, ‘isp_users_guide’ ); ?>";
</script>
[/php]

としてnonceを追加しました。