web-dev-qa-db-ja.com

投稿後に簡単なJSアラートボックスを追加する

レビューのために顧客によって製品が追加されたときに、簡単なJavascriptアラートボックスを追加したいです。ただし、投稿ステータス遷移フックを使用すると、ポップアップの後に白いページが作成されます。ページがリロードされた後に発生するフックはありますか?これが私の現在のコードです:

//JS alert on submit product
    function notify_me_for_pending() {
      $notice = __('Thank you for your submission. Your product will be available for purchase as soon as we have approved it!', 'pressive-child');
      echo 'alert("'.$notice.'");';
    }
    add_action( 'draft_to_pending', 'notify_me_for_pending' );
    add_action( 'auto-draft_to_pending', 'notify_me_for_pending' );
    add_action('new_to_pending', 'notify_me_for_pending');
1
Daniel Klose

Postが更新されるとWordPressはあなたを/wp-admin/post.phpから/wp-admin/post.php?post=41&action=editにリダイレクトします。したがって、コンテンツが印刷される前にスキップされる遷移ステータスフックに対して行うことは何でしょうか。

解決策: - /

  • トランジションフックコールバック関数ストア(post meta)にjs popupを表示するためのフラグ
  • admin_headフックに新しい関数をバインドします
  • Flagが表示されているか確認してポップアップとリセットのフラグを表示します。

例: -

//Update post meta to display alert
function add_js_for_pending($post) {
    update_post_meta($post->ID, 'trigger_notice', TRUE);
}
add_action( 'draft_to_pending', 'add_js_for_pending' );
add_action( 'auto-draft_to_pending', 'add_js_for_pending' );
add_action('new_to_pending', 'add_js_for_pending');

//JS alert on submit product

function notify_me_for_pending() {
    global $post;
    $current_screen = get_current_screen();
    //Check if we need to display alert
    if ($current_screen->base == 'post' && get_post_meta($post->ID, 'trigger_notice', TRUE)) {
        $notice = __('Thank you for your submission. Your product will be available for purchase as soon as we have approved it!', 'pressive-child'); ?>
        <script type="text/javascript">
            <?php echo 'alert("'.$notice.'");'; ?>
        </script><?php
         delete_post_meta($post->ID, 'trigger_notice'); //Alert is done now remove it.
    }
}
add_action('admin_head', 'notify_me_for_pending');
1
Sumit