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?


2 Answers 2



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.

  • Thanks for your help. That's exactly what I was looking for. I used wp_die to pause the publish process.
    – fdsa
    Commented Mar 23, 2012 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.

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.