Wordpress帖子保存/编辑帖子钩子

时间:2011-12-03 20:48:39

标签: wordpress post hook

我正在寻找一个管理钩子,用于保存帖子后被解雇的帖子。问题:save_post不包含已更改的数据到post对象。新更改只能在$_POST数组中找到。但是,一旦post_name更改,我需要一种方法将永久链接更新为外部API。但它不起作用,因为$post对象在保存操作之前仍然是旧对象。

3 个答案:

答案 0 :(得分:3)

你应该能够在使用优先级参数更新帖子后挂钩(在本例中设置为20):

add_action( 'save_post', 'your_function', 20, 1 );
function your_function( $post_id ) {
    // this should be the updated post object 
    $post = get_post( $post_id );
}

答案 1 :(得分:1)

我认为最合适的方法是从数据库中查询旧值并将值与$_POST数组值进行比较。

这是一个可以帮助您从数据库中读取值的链接。

http://codex.wordpress.org/wpdb#query_-_Run_Any_Query_on_the_Database

P.S:你当然应该在#34;之前进行这种比较。将新值保存到数据库中。

答案 2 :(得分:0)

自WordPress 3.0.0起,post_updated钩可用。这有助于了解更新后帖子中发生了什么变化。您可以在WP Codex中使用the example作为示例。

add_action( 'post_updated', 'check_updated_post_name', 10, 3 );
function check_updated_post_name( $post_ID, $post_after, $post_before ) {
    if ( $post_after->post_name != $post_before->post_name ) {
        // do what you need
    }
}

如果刚刚插入了帖子,则可以使用save_postsave_post_{$post->post_type}挂钩。检查第三个参数的值以确保帖子是新的。

add_action( 'save_post', 'check_new_post_name', 10, 3 );
function check_new_post_name( $post_ID, $post, $update ) {
    if ( ! $update ) {
        // do what you need
    }
}