-2

早上好,我需要一个钩子或其他东西来区分新帖子和更新帖子。

我只想为新帖子执行一些代码......类似的东西:

add_action('publish_post', myfunction);

function myfunction( $post_id ){
    if <new post> {
        /* do something */
    }
    else {
        /* do nothing */
    }
}

我正在使用 WP v3.5

有什么建议吗?

4

1 回答 1

1

首先,您要使用 draft_to_publish 钩子:

add_action('draft_to_published', 'my_function');

但是,如果帖子已发布、未发布然后再次发布,这可能会触发多次。为确保您的操作仅触发一次,请在函数末尾为帖子设置自定义元元素。在您的函数开始时,检查您的元元素是否已设置,如果是则跳过该操作。

- - 添加 - -

这是一个关于重复动作保护如何工作的示例(未经测试的代码 - 所以可能需要一些工作):

function my_function() {
    $already_done = get_post_meta($post_id, 'do_once', true);
    if(!$already_done) {
        // Do what you need to do here
        add_post_meta($post_id, 'do_once', 1, true);
    }
}
于 2012-12-31T14:38:22.757 回答