创建自定义帖子类型时向管理员用户发送电子邮件

时间:2017-09-15 作者:public9nf

我需要发送一封电子邮件给管理员用户时,张贴类型为“任务”的帖子创建。任何帮助都将不胜感激。谢谢

3 个回复
最合适的回答,由SO网友:Frank P. Walentynowicz 整理而成

如果您想发送电子邮件on first publish and on updates, 您可以通过使用{status}_{post type} 行动挂钩。将下面的代码放入当前主题的函数中。php:

add_action( \'publish_task\', \'wpse_admin_email\', 10, 2 );
function wpse_admin_email( $post_id, $post ) {
    // prepare and send email code goes here...
}
如果您想发送电子邮件on first publish only, 使用以下代码:

add_action( \'transition_post_status\', \'wpse_admin_email_once\', 10, 3 );
function wpse_admin_email_once( $new, $old, $post ) {
    if ( $post->post_type == \'task\' && $new == \'publish\' && $old == \'auto-draft\' ) {
        // prepare and send email code goes here...
    }
}

SO网友:Asisten

您可以在wp insert post之后添加具有指定post类型的操作:

    function after_task_post_created( $post_id ) {
    //no action if post type not task
    if (get_post_type($post_id) != \'task\')
    return;
    // If this is a revision, don\'t send the email.
    if ( wp_is_post_revision( $post_id ) )
    return;

   // if post not yet published so no action taken, i know it can be confused
   if (get_post_status( $post_id ) != \'publish\' )
   return;


    // your email action

        $yoursubject = \'This is your email subject\';

        $yourmessage = "a body message here";

        // Send email.
    $adminemail = get_option( \'admin_email\' );
        wp_mail( $adminemail, $yoursubject, $yourmessage );
    }
    add_action( \'wp_insert_post\', \'after_task_post_created\');
参考号:

https://codex.wordpress.org/Plugin_API/Action_Reference/wp_insert_post

https://developer.wordpress.org/reference/functions/get_post_type/

https://developer.wordpress.org/reference/functions/get_option/

SO网友:Drupalizeme

您可以使用这个非常简单的操作来控制自定义post\\u类型的创建

add_action( \'transition_post_status\', \'transition_fun\', 10, 3 );
function transition_fun( $new, $old, $post ) {
    if ( ( $new == \'publish\' ) && ( $old != \'publish\' || $old != \'auto-draft\' ) && ( $post->post_type == \'task\' ) ) {
        echo \'send mail......\';
    } else {
        return;
    }
}
只需将其插入functions.php 或作为plugin.

例如,如果以后您想访问草稿状态,可以使用“自动草稿”轻松完成此操作

结束

相关推荐

加载CSS文件的子主题中的Functions.php中断网站

我创建了一个子主题并创建了一个函数。子主题目录中也具有所需样式的php文件。css文件和我要加载的单独自定义css文件。这是我使用的代码:<? php add_action(\'wp_head\', \'add_landing_css\'); function add_landing_css() { wp_enqueue_style(\'landing_css\', get_stylesheet_directory_uri().\'/landing.cs