为什么不触发SAVE_POST事件呢?

时间:2017-05-12 作者:Pavel V

世界

为什么不解雇save_post 事件

function action_function_name_13( $content ) {

  $content = \'<div>\' . $content . \'</div>\';

  return $content;

}

add_action( \'save_post\', \'action_function_name_13\' );
您需要使用$content 变量,即在保存或更新帖子期间。

对不起,由翻译翻译翻译。。。

1 个回复
SO网友:Nathan Johnson

这个save_post 操作挂钩在保存帖子后激发:每次,即使是自动保存。

如果您查看参考save_post, 您将看到回调收到三个参数:第一个是整数$post_ID, 第二个是WP\\u Post对象$post, 第三个是boolean $使现代化所有参数都不是内容字符串。

根据您的代码,您似乎正在尝试将筛选器添加到the_content. 因此,您的代码应该是:

function action_function_name_13( $content ) {
  return \'<div>\' . $content . \'</div>\';
}
add_filter( \'the_content\', \'action_function_name_13\' );
如果这不是您想要做的,请查看hook reference 一个描述你正在尝试什么并更新你的问题的钩子。

这里有一种方法可以在帖子内容保存到数据库后修改帖子内容。

//* save_post fires *after* the post has been saved to the database
add_action( \'save_post\', \'wpse_266719_save_post\', 10, 3 );
function wpse_266719_save_post( $post_ID, $post, $update ) {
  //* Remove action so it doesn\'t fire on wp_update_post()
  remove_action( \'save_post\', \'wpse_266719_save_post\', 10 ); 
  $id = $post->ID;
  $content = htmlspecialchars( $post->post_content, ENT_QUOTES, \'UTF-8\', false );
  $postarr = array( \'ID\' => $id, \'post_content\' => $content, );
  wp_update_post( $postarr );
}

结束

相关推荐