web-dev-qa-db-ja.com

Wordpressのnonceをajaxリクエストに追加する方法

私はプラグインを持っています、cronジョブは毎日refresh_my_plugin()を実行します。

私は自分のプラグインの設定/オプションページにボタンを必要とし、ユーザーが手動で上記の機能を実行することを可能にします、そして私はそれをajaxでインラインにしたいです。

私は次のものを持っています、それはうまくいくはずです - しかし、どのようにそれにWordpressのNoncesを追加するでしょうか?

<?php 
    if (isset($_POST['refresh_my_plugin'])) {
        refresh_my_plugin();
    }

    function refresh_my_plugin() {
        // main function, runs daily with cron
        return true;
    }
?>

<button id='refresh'>Refresh My Plugin</button>

<script>
    jQuery('#refresh').click(function(){
        $.ajax({
            type: 'post',
            data: { "refresh_my_plugin": "now"},
            success: function(response) { 
                jQuery('#refresh').text("Successfully Refreshed!");
            },
            error: function(response) { 
                jQuery('#refresh').text("...error!");
            },
        });
    });
</script>
2
David Sword

私はそれを考え出した。単純に、私の要求では、dataの下に、私は追加しました

"nonce" : "<?php echo wp_create_nonce( 'refresh_my_plugin' ); ?>"

それから検証する

if (isset($_POST['refresh_my_plugin']))
    if ( wp_verify_nonce( $_POST['nonce'], 'refresh_my_plugin' ) )
        refresh_my_plugin();

wp_verify_nonceが正しくないと、代わりに403が表示されます。これはerrorハンドラーのボタンに反映されています。

2
David Sword