发布新帖子时,wordpress钩子是什么(不是在我更新已发布的帖子时)?

时间:2016-11-22 14:42:38

标签: wordpress wordpress-hook

我想在首次发布新帖子时(而不是在编辑时)发送电子邮件

我试过了:

add_action('publish_post', 'postPublished');

但是,当我更新已发布的帖子时,postPublished 也会被调用。 我只想在第一次发布帖子时将其称为

此致

3 个答案:

答案 0 :(得分:4)

我认为你正在寻找的钩子是draft_to_publish

如果您只想在新帖子上发送电子邮件,我会考虑在帖子发布时进行定位。你甚至可以查看transition_post_status钩子,只是条件化如果帖子已被编辑,这样的东西可以工作:

function so_post_40744782( $new_status, $old_status, $post ) {
    if ( $new_status == 'publish' && $old_status != 'publish' ) {
        $author = "foobar";
        $message = "We wanted to notify you a new post has been published.";
        wp_mail($author, "New Post Published", $message);
    }
}
add_action('transition_post_status', 'so_post_40744782', 10, 3 );

答案 1 :(得分:0)

您应该阅读WordPress Codex中的Post Status Transitions,以便完全了解问题。

例如,涵盖大多数情况的可能解决方案是:

add_action('draft_to_publish', 'postPublished');
add_action('future_to_publish', 'postPublished');
add_action('private_to_publish', 'postPublished');

答案 2 :(得分:0)

function your_callback( $post_id, $post  ) {

        if (strpos($_SERVER['HTTP_REFERER'], '&action=edit') !== false) {

            //edit previous post
        }
        else{
            //just add a new post
        }
    }
    add_action( 'publish_{your_post_type}', 'your_callback', 10, 3 );