当前浏览:首页 / WordPress钩子 / save_post_{$post->post_type}

do_action( "save_post_{$post->post_type}", int $post_ID, WP_Post $post, bool $update )

保存文章后触发

postmore...

save

typemore...


描述

钩子名称的动态部分$post->post_type指的是文章类型的slug。

可能的挂钩名称包括:

  • save_post_post
  • save_post_page

参数

$post_IDint
Post ID.
$postWP_Post
Post 对象.
$updatebool
这是否是正在更新的现有文章。


源码

查看源码 官方文档


更新日志

版本描述
3.7.0开始引入

使用示例

  • 示例1

    当在DB中创建草稿时,当单击自定义文章类型的“添加新”选项时,以及当调用wp_update_post函数时,钩子也会触发。

  • 示例2

    有点悲哀的是,在不太明确的‘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
    }
  • 示例3

    添加新的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 );
    }