从POST_CONTENT中删除图像

时间:2011-07-02 作者:jyoseph

我正在尝试在函数中设置函数。保存时从post\\u内容中删除图像的php。直到我试图保存内容时,页面才挂起,我收到一个“500 Internal Server”错误。

function remove_post_image( $post_ID ){

  // get the post
  $the_post = get_post($post_ID);

  // get the content of the post
  $post_content = $the_post->post_content;

  // replace any images
  $content = preg_replace("/<img[^>]+\\>/i", "", $post_content);

  // save the post
  $my_post = array();
  $my_post[\'ID\'] = $post_ID;
  $my_post[\'post_content\'] = $content;

  // Update the post into the database
  wp_update_post( $my_post );   

  return $post_ID;
}
add_action(\'save_post\', \'remove_post_image\');
我担心我错过了一些非常基本的东西。有人能发现我做错了什么吗?

编辑

我已经知道这是多么愚蠢的设置。我在以下方面取得了成功,但仍然想知道这是否是最好的方法?我正在使用content\\u save\\u pre action。。。

function remove_post_image( $content ){

  // replace any images
  $content = preg_replace("/<img[^>]+\\>/i", "", $content);

  return $content;
}
add_action(\'content_save_pre\', \'remove_post_image\');

2 个回复
最合适的回答,由SO网友:Bainternet 整理而成

content_save_pre 将是一个更好的挂钩,用于剥离图像,以及将post缩略图设置为post Meta,您可以使用save_post 因为第一个钩子在设置post Id之前被触发,所以您需要update_post_meta.

SO网友:Rarst

您的函数调用wp_update_post(), 哪个呼叫wp_insert_post() 其中运行save_post 行动,哪个开火猜猜怎么着?您的功能。

最好使用wp_insert_post_data 这是为了过滤数据,而不是save_post 仅表示数据已被处理的操作。

结束