检查是第一次发布帖子,还是正在更新已发布的帖子

时间:2012-06-28 作者:fasad

我正在为一个事件模块构建一个附加模块,用于检查可用性,因为该模块中没有用于检查可用性的功能。现在我已经建立了逻辑,我需要发送三封电子邮件:

如果职位是第一次提交(即“新任命”),则为一个

如果帖子是由网站管理员发布的,则为一篇,因为普通用户无法自行发布(即“您的约会已获得批准”)

  • 一个原因是,如果帖子已经编辑,那么在发布之后(即“您的约会已经编辑”)
    • 我已经连接到前两个版本的save\\u post和publish\\u post,但我希望在编辑发布的帖子时发送一封完全不同的电子邮件。我如何测试文章是否已经发布,这只是一个编辑,而不是第一次发布?

    2 个回复
    最合适的回答,由SO网友:fuxia 整理而成

    Hook into edit_post 捕捉更改。看看wp_transition_post_status() 在插入和更新时调用:

    function wp_transition_post_status($new_status, $old_status, $post) {
        do_action(\'transition_post_status\', $new_status, $old_status, $post);
        do_action("{$old_status}_to_{$new_status}", $post);
        do_action("{$new_status}_{$post->post_type}", $post->ID, $post);
    }
    
    在上publish 你陷入了

    • draft_to_publish,
    • pending_to_publishauto-draft_to_publish. edits 钩入publish_to_publish.

      示例

      在发布或编辑后通知所有作者的迷你插件。

      <?php
      /**
       * Plugin Name: (#56779) Notify authors
       */
      add_action( \'transition_post_status\', \'wpse_56779_notify_authors\', 10, 3 );
      function wpse_56779_notify_authors( $new_status, $old_status, $post )
      {
          if ( \'publish\' !== $new_status )
              return;
      
          $subject = \'publish\' === $old_status
              ? __( \'Edited: %s\', \'your_textdomain\' )
              : __( \'New post: %s\', \'your_textdomain\' );
      
          $authors = new WP_User_Query( array( \'role\' => \'Author\' ) );
          foreach ( $authors as $author )
          {
              wp_mail(
                  $author->user_email,
                  sprintf( $subject, $post->post_title ),
                  $post->post_content
                  // Headers
                  // Attachments
              );
              // Slow down
              sleep( 5 );
          }
      }
      

    SO网友:Softmixt

    Use this....

    function save_func($ID, $post,$update) {
    
       if($update == false) {
         // do something if its first time publish
       } else {
         // Do something if its update
       }
    }
    
    add_action( \'save_post\', \'save_func\', 10, 3 );
    
    结束

    相关推荐

    no emails for a user account

    是否可以在没有电子邮件的情况下创建用户帐户。只是用户名?我看到有一个插件允许在一封电子邮件中包含多个作者。有人对其他方法有什么建议吗。我知道这并不理想,但我有一个用户谁将张贴代表多个用户。让用户通过gravatar为每个新作者验证他们的电子邮件是http://coffee2code.com/wp-plugins/allow-multiple-accounts/