在保存新草稿或发布新帖子后发送带有自定义字段的电子邮件

时间:2020-06-11 作者:Pacicio

我有一个自定义的帖子类型immobile 使用使用工具集类型创建的一些自定义字段。

我需要发送和电子邮件的标题和自定义字段时,一个新的immobile 保存为草稿或已发布。

我设法做到了almost 一切。我的代码如下:

add_action( \'auto-draft_to_draft\', \'my_send_email\', 99 );
add_action( \'auto-draft_to_publish\', \'my_send_email\', 99 );
add_action( \'draft_to_publish\', \'my_send_email\', 99 );
function my_send_email( $post ) {
  if ( $post->post_type == \'immobile\' ) {
    wp_mail(
      \'[email protected]\',
      \'New immobile saved as \' . $post->post_status,
      \'Title: \' . $post->post_title . \'. Ref: \' . get_post_meta( $post->ID, \'wpcf-reference\', true ),
      array(\'Content-Type: text/html; charset=UTF-8\')
    );
  }
}
不幸的是,我的自定义字段没有显示在电子邮件中,可能是因为它在我使用的挂钩后被保存。

完美的解决方案是一个挂钩:

已启动after 帖子元已保存,请允许我检查帖子的post\\u状态before 它被保存了post updated 但我得到了相同的结果:自定义字段不显示。

我可以用哪个钩子?或者我应该尝试一种完全不同的方法?

1 个回复
SO网友:leitmotiv

我想您需要先处理post请求。你必须这样做,因为古腾堡两次打钩。

function transition_post_status_handler( $new_status, $old_status, $post ) {
    if ( defined( \'REST_REQUEST\' ) && REST_REQUEST ) {
        send_mail_on_publish( $new_status, $old_status, $post );
        set_transient( \'post_status_updater_flag\', \'done\', 10 );
    } else {
        if ( false === get_transient( \'post_status_updater_flag\' ) )
            send_mail_on_publish( $new_status, $old_status, $post );
    }
}
add_action( \'transition_post_status\', \'transition_post_status_handler\', 10, 3 );
然后您可以调用该函数来发送电子邮件。在这一点上,我认为你有可用的元数据。

function send_mail_on_publish( $new_status, $old_status, $post ) {

    if ( \'publish\' == $new_status && \'immobile\' == get_post_type($post) ) {

        // Check if not an autosave
        if ( wp_is_post_autosave( $post->ID ) )
            return;

        // Check if not a revision
        if ( wp_is_post_revision( $post->ID ) )
            return;

        // Send email

    }
}

相关推荐

如何让`wp-list-table`显示我在Custom-Post中的`Custom-Fields`

一切都好吗<我需要wp-list-table 也要显示custom-fields 在每个custom-post 我有,但我不知道如何做到这一点,在这幅图中,它显示了带有字段的表格:Title, Author and Publication Date: 我想要的是能够选择custom-fields 将出现,例如以下示例Title, Carta, Naipe, Author, and Date of Publication: