I still haven't figured this out yet. Is this the right way? I tried $_POST['content'] = "nothing" and $_POST['content'] = 0 neither work for me. I'm using following way

function changeContent() {
     $_POST['content'] = "nothing"; 
add_action('publish_post', 'changeContent');

I want to change the content before it's written into the database.

1 Answer 1


You might check out the content_edit_pre filter.

Your example would then look like this:

function wpse89725_pre_edit_content( $content, $post_id ) {
   $content = "nothing";
   return $content;
add_filter( 'content_edit_pre', 'wpse89725_pre_edit_content', 10, 2 );

You can read more about this filter in the Codex:



You can also try the edit_post_content filter:

add_filter( 'edit_post_content', 'my_pre_edit_content', 10, 2 );

Since we have in the file /wp-includes/post.php these lines:

 $value = apply_filters("edit_{$field}", $value, $post_id);
 // Old school
 $value = apply_filters("{$field_no_prefix}_edit_pre", $value, $post_id);

both of these filters should work, but the filters *_edit_pre seems to be on the way out and replaced by edit_*.

  • thanks! but here it says content_edit_pre is depreciated in version 3.5? I tried a few related ones, but they are all said to be depreciated? so strange.. adambrown.info/p/wp_hooks/hook/content_edit_pre
    – Arch1tect
    Mar 7, 2013 at 2:47
  • It's a dynamic hook: $value = apply_filters("{$field_no_prefix}_edit_pre", $value, $post_id); so that might be the reason why the adambrown-scraper can't find it. It works on my 3.5.1 install.
    – birgire
    Mar 7, 2013 at 2:52
  • I updated the answer ;-)
    – birgire
    Mar 7, 2013 at 3:06
  • Thanks a lot~ I tried both and both work, and I'll use the latter. I chose your answer already, btw do you have any idea why intercepting post value won't work? $_POST['content'] = "nothing"
    – Arch1tect
    Mar 7, 2013 at 3:10
  • great thanks - I think the post has already been saved when you call the publish_post action. Your example might work with the init hook and the $_POST['post_content'] but I don't think it's ideal to mess with the $_POST variable ;-)
    – birgire
    Mar 7, 2013 at 3:24

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Not the answer you're looking for? Browse other questions tagged or ask your own question.