WordPress Development Stack Exchange is a question and answer site for WordPress developers and administrators. Join them; it only takes a minute:

Sign up
Here's how it works:
  1. Anybody can ask a question
  2. Anybody can answer
  3. The best answers are voted up and rise to the top

My website is set up with pages as categories, meaning that if a user publishes without choosing a category, no one can see the post unless they know the specific address.

What do I need to hook into in order to check if a category is chosen after the "publish" button is pressed but before the post is published publicly?

share|improve this question
Have you tried to build ontop of any of the solutions there? What worked? What didn't? – soulseekah Mar 23 '12 at 14:14
Yes...those were the type of questions I was looking for - couldn't find them for some reason. – fdsa Mar 23 '12 at 22:03
up vote 0 down vote accepted


function wpse46583_save($post_id,$post) {
     // verify this is not an auto save routine. 
     if ( defined('DOING_AUTOSAVE') && DOING_AUTOSAVE ) return;

     //You should check nonces and permissions here
      if ( !current_user_can( 'edit_page', $post_id )

     //Get category slugs associated with post
     $cats =get_the_category($post_id);

        //No category assigned - do something here.

share|improve this answer
Thanks for your help. That's exactly what I was looking for. I used wp_die to pause the publish process. – fdsa Mar 23 '12 at 22:03

You can hook wp_insert_post_data to get the data that is about to be inserted into the database. What you do with it from there is your call, but you will at least have access to it. Keep in mind that this hook is done before the new post data is inserted into the DB, so you won't be able to interact with the post using a lot of the functions you're used to.

share|improve this answer

Your Answer


By posting your answer, you agree to the privacy policy and terms of service.

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