2017-04-05 54 views
0

wp_verify_nonceが機能しないのは驚きです。それは未定義の関数エラーを表示しています、私のWordPressのバージョンは現在までです。私はプラグインのコードをつけています。問題はwp_verify_nonce()pluggable関数であることである私にwp_verify_nonceは動作しませんが、wp_create_nonceは動作します

add_shortcode('tw_safety_checklist_template','init_tw_safety_checklist'); 

    function init_tw_safety_checklist(){ 
     echo '<form method="post"> 
      <label>Name</label> 
      <input type="hidden" name="tw_new_checklist_nonce" value="'.wp_create_nonce('tw_new_checklist_nonce').'"/> 
      <input type="text" name="tw_name" /> 
      <input type="submit" name="submit" value="Submit"/> 
     </form>'; 
    } 

    if(isset($_POST['tw_new_checklist_nonce'])){ 
     tw_create_my_template();    
    } 

    function tw_create_my_template(){ 
     if(wp_verify_nonce($_POST['tw_new_checklist_nonce'],'tw-new-checklist-nonce')) 
     { 
      return 'Worked!'; 
     } 
    } 

答えて

2

を助けてください。つまり、プラグインがロードされるまで宣言されません。 ifステートメントはファイル内で緩いので、プラグインが読み込まれたときに実行されています。したがって、wp_verify_nonce()(正しく)はまだ宣言されていません。

ifステートメントをaction hookに移動する必要があります。add_action()を使用してください。あなたのtw_create_my_template()関数の目的が正確にどのフックに依存するか。あなたはどんなフックでinitを交換したいと思うでしょう

add_action('init','tw_create_my_template'); 
function tw_create_my_template(){ 
    if(isset($_POST['tw_new_checklist_nonce']) 
     && wp_verify_nonce($_POST['tw_new_checklist_nonce'],'tw-new-checklist-nonce')) 
    { 
     return 'Worked!'; 
    } 
} 

注意が、あなたの関数に適している:あなたはこのような何かをしたいと思います。 initは、プラグインの初期化アクションではかなり一般的ですが、重要なことは、plugins_loadedの後に起こることです。典型的なアクションのリストは、順番にhereです。

+0

こんにちは、お返事ありがとうございます!それは完全に働いた – user3783411

関連する問題