web-dev-qa-db-ja.com

Ajax Check Postステータス

私はこの機能を持っていて、作者が新しい記事を作成するたびに作者を購読しているすべてのユーザーに電子メールを送ります。投稿が更新された場合、または新しい投稿がユーザーによって公開された場合は、数秒ごとに機能を調整して確認します。もしそうなら、その作者の全ての購読者を "live"通知ポップアップを通して更新してください(実際にはライブではありませんが、setInterval関数を通して行われるようにライブのようです)。とにかく、どんな助けでも大歓迎です!

これが現在の関数です:

add_action('publish_listings', 'vba_update', 10, 1);
add_action('draft_listings', 'vba_update', 10, 1);
function vba_update($post_id){ 
    $args = array(
        'include'   => tb_get_followers($user_id)
    );
    $user_query = new WP_User_Query($args);

    if ( !empty($user_query->results) ) : 

        $post_title = get_the_title( $post_id ); 
        $post_url = get_permalink( $post_id ); 
        $subject = 'A post has been updated'; 
        $message = "A post has been updated on your website:\n\n";
        $message .= "<a href='". $post_url. "'>" .$post_title. "</a>\n\n"; 

        /** Send an individual message to each user */
        foreach ( $user_query->results as $user ) :
            wp_mail($user->data->user_email, $subject, $message);
        endforeach;
    endif; 
}
1
Matt H

だから基本的にあなたは投稿変更をチェックするajaxメソッドが欲しいです。

これはフロントエンドとバックエンドのためのWP ajaxに関する素晴らしい記事です

手短に言えば、次のことを行います。

  • 通知ポップアップを表示したいページにAjax JSスクリプトをロードします。
  • フックwp_ajax_{your_custom_action}を使用して、wp ajaxサーバー側処理を作成します。 OR WP REST AP​​Iを使用します。
  • 投稿が変更されたかどうかなどをチェックし、結果をajax jsスクリプトにエコーバックします。
  • Ajaxの応答が 'new_post'などの場合はポップアップを表示します。

setintervalは使いません。 ajax応答が良好であれば、ページのロード時に最初のajax呼び出しを行い、X秒後に次のajax呼び出しを行います。

1
Bjorn