描述
钩子名称的动态部分$post->post_type
指的是文章类型的slug。
可能的挂钩名称包括:
save_post_post
save_post_page
参数
$post_ID
int-
Post ID.
$post
WP_Post-
Post 对象.
$update
bool-
这是否是正在更新的现有文章。
源码
更新日志
版本 | 描述 |
---|---|
3.7.0 | 开始引入 |
使用示例
当在DB中创建草稿时,当单击自定义文章类型的“添加新”选项时,以及当调用
wp_update_post
函数时,钩子也会触发。有点悲哀的是,在不太明确的‘save_post’动作之前,这个更明确的动作启动了。
这意味着如果第三方插件使用‘save_post’执行某些操作,您也需要使用‘save_post’来覆盖它。
// someone else's code... add_action( 'save_post', 'wpdocs_do_something_custom', 15 ); // try to override with CPT action - DOES NOT WORK add_action( 'save_post_third_party_cpt', 'wpdocs_override_something_custom', 20, 2 ); // you must do this to override add_action( 'save_post', 'wpdocs_override_something_custom', 20, 2 ); function override_something_custom( $post_id, $post ) { // bail out if this is an autosave if ( defined( 'DOING_AUTOSAVE' ) && DOING_AUTOSAVE ) { return; } // bail out if this is not an event item if ( 'third_party_cpt' !== $post->post_type ) { return; } // ... do override stuff }
添加新的book(自定义文章)时通知您的时事通讯订阅者-
add_action( 'save_post_book', 'wpdocs_notify_subscribers', 10, 3 ); function wpdocs_notify_subscribers( $post_id, $post, $update ) { // If an old book is being updated, exit if ( $update ) { return; } $subscribers = array( 'john@doe.com', 'jane@doe.com', 'someone@else.com' ); // list of your subscribers $subject = 'A new book has beed added!'; $message = sprintf( 'We\'ve added a new book, %s. Click <a href="%s">here</a> to see the book', get_the_title( $post ), get_permalink( $post ) ); wp_mail( $subscribers, $subject, $message ); }