我想发送电子邮件给管理员的每一个新发布的帖子。我在用钩子
add_action(\'publish_post\' \'custom_send_admin_email\');
但上面的钩子会发送电子邮件,如果在帖子中也有任何更新,我不想发生。是否有任何钩子或调整只在第一次发布帖子时发送邮件,而不是针对帖子中的每个更新?我想发送电子邮件给管理员的每一个新发布的帖子。我在用钩子
add_action(\'publish_post\' \'custom_send_admin_email\');
但上面的钩子会发送电子邮件,如果在帖子中也有任何更新,我不想发生。是否有任何钩子或调整只在第一次发布帖子时发送邮件,而不是针对帖子中的每个更新?您可以使用transition_post_status
钩
<?php
add_action( \'transition_post_status\', \'custom_send_admin_email\', 10, 3 );
function custom_send_admin_email( $new_status, $old_status, $post ) {
if ( \'publish\' === $new_status && \'publish\' !== $old_status ) {
// Consider sending an email here.
}
}
下面是第二个示例,它还检查特定的帖子类型。请注意$post
是的实例WP_Post
, 因此,如果您需要了解有关该帖子的更多信息,可以访问其所有属性。<?php
add_action( \'transition_post_status\', \'custom_send_admin_email\', 10, 3 );
function custom_send_admin_email( $new_status, $old_status, $post ) {
if ( \'post\' === $post->post_type && \'publish\' === $new_status && \'publish\' !== $old_status ) {
// Consider sending an email here.
}
}
再进一步,我们可以设置一个post meta值,将帖子标记为已经发送到管理员的电子邮件地址。这使得它更聪明,能够处理一些棘手的情况。例如,当一个帖子从trash
地位publish
地位我们还可以发送状态更改为的电子邮件future
, 这表明该帖子计划在未来某个日期发布。这样,管理员就可以在预定提前发布的时候收到电子邮件,而不是在实际发布供公众查看的那天。
<?php
add_action( \'transition_post_status\', \'custom_send_admin_email\', 10, 3 );
function custom_send_admin_email( $new_status, $old_status, $post ) {
if ( \'post\' === $post->post_type && in_array( $new_status, array( \'publish\', \'future\' ), true ) && ! in_array( $old_status, array( \'publish\', \'future\' ), true ) ) {
if ( ! get_post_meta( $post->ID, \'emailed_to_admin\', true ) ) {
// Consider sending an email here.
// ...
// Flag email as having been sent now.
update_post_meta( $post->ID, \'emailed_to_admin\', time() );
}
}
}
我将从一个示例开始:回声get_header(); 将响应的内容header.php 与相同get_footer(); (呼应footer.php). 如何创建myown。我的目录中的php文件并使用echo get_myown(); 要显示内容?我正在一个网站上工作,不想重复代码。(一)don\'t want 使用do_shortcode())