Title: Change Status after Comments
Last modified: October 16, 2016

---

# Change Status after Comments

 *  Resolved [eVersatile](https://wordpress.org/support/users/eversatile/)
 * (@eversatile)
 * [9 years, 7 months ago](https://wordpress.org/support/topic/change-status-after-comments/)
 * Hello, I have been trying to get this to work several different ways but can 
   not figure it out, starting to wonder if it’s even possible.
    What I am trying
   to accomplish is, after a post receives a comment then the post status automatically
   changes from publish to archive. Can anyone help me with this?

Viewing 11 replies - 1 through 11 (of 11 total)

 *  Moderator [Steven Stern (sterndata)](https://wordpress.org/support/users/sterndata/)
 * (@sterndata)
 * Volunteer Forum Moderator
 * [9 years, 7 months ago](https://wordpress.org/support/topic/change-status-after-comments/#post-8307261)
 * There is no post status of “archive”. Please explain what you are trying to accomplish.
 *  Thread Starter [eVersatile](https://wordpress.org/support/users/eversatile/)
 * (@eversatile)
 * [9 years, 7 months ago](https://wordpress.org/support/topic/change-status-after-comments/#post-8307277)
 * I have actually created a custom status called ‘archive’ it kind of works like‘
   draft’. Though after further testing, I now know this is not going to work for
   me.
    I would actually like to change it to a ‘private’ post after it receives
   a comment.
 *  Moderator [Steven Stern (sterndata)](https://wordpress.org/support/users/sterndata/)
 * (@sterndata)
 * Volunteer Forum Moderator
 * [9 years, 7 months ago](https://wordpress.org/support/topic/change-status-after-comments/#post-8307506)
 * You’ll need to hook the save comment action and use it to change the status of
   the comment’s parent.
 * [https://codex.wordpress.org/Plugin_API/Action_Reference/wp_insert_comment](https://codex.wordpress.org/Plugin_API/Action_Reference/wp_insert_comment)
 *  Thread Starter [eVersatile](https://wordpress.org/support/users/eversatile/)
 * (@eversatile)
 * [9 years, 7 months ago](https://wordpress.org/support/topic/change-status-after-comments/#post-8308971)
 * I have tried using that codex to accomplish what I am trying to do but have not
   come up with a solution yet.
    I have also tried using the information at [THIS LINK](http://wordpress.stackexchange.com/questions/20729/easiest-way-to-make-post-private-by-default)
   Though, I am starting to think I may be able to accomplish this using a existing
   code I have made on the site. The current code is
 *     ```
       global $post,$current_user;
       $args = array( 'post_id' => $post->ID );
       $comment = get_comments( $args );
         get_currentuserinfo();
         if ($post->post_author == $current_user->ID && 3 <= count( $comment ) ){
           echo do_shortcode( '[button]' );
       } elseif ( 3 <= count( $comment ) ) {
       //blank
       } else {
           comment_form();
       }
       ```
   
 * Would I be able to hook into something under ‘elseif’ to change the post to private?
 *  Moderator [Steven Stern (sterndata)](https://wordpress.org/support/users/sterndata/)
 * (@sterndata)
 * Volunteer Forum Moderator
 * [9 years, 7 months ago](https://wordpress.org/support/topic/change-status-after-comments/#post-8309131)
 * the filter I suggested is the correct way to make the post private.
 *  Thread Starter [eVersatile](https://wordpress.org/support/users/eversatile/)
 * (@eversatile)
 * [9 years, 7 months ago](https://wordpress.org/support/topic/change-status-after-comments/#post-8309183)
 * I have tried using that filter different ways and it never worked. There’s nothing
   in wp_insert_comment that’ll change the status of the post….. could you elaborate
   a little?
 *  Moderator [Steven Stern (sterndata)](https://wordpress.org/support/users/sterndata/)
 * (@sterndata)
 * Volunteer Forum Moderator
 * [9 years, 7 months ago](https://wordpress.org/support/topic/change-status-after-comments/#post-8309573)
 * add your code that changes the status inside the filter. It gets called when 
   a comment is saved, so that’s the ideal time to do what you need.
 *  Thread Starter [eVersatile](https://wordpress.org/support/users/eversatile/)
 * (@eversatile)
 * [9 years, 7 months ago](https://wordpress.org/support/topic/change-status-after-comments/#post-8309779)
 * Ok. I get what you are saying and it really does help but it does not solve the
   problem. I don’t have a code to change the status, that is what I really need
   help with. I don’t know what to use to change the status.
 *  Thread Starter [eVersatile](https://wordpress.org/support/users/eversatile/)
 * (@eversatile)
 * [9 years, 6 months ago](https://wordpress.org/support/topic/change-status-after-comments/#post-8331192)
 * I have kind of figured something out but it’s not working like I want it to.
   
   Added completely new code to functions.php
 *     ```
       global $post;
       $args = array( 'post_id' => $post->ID );
       $comment = get_comments( $args );
       if ( 3 <= count( $comment ) ){
             $post = array( 'ID' => '1015', 'post_status' => 'private' );
       wp_update_post($post);
       } else {
       //blank
       }
       ```
   
 * What that should do, as far as I know, is change the status to private after 
   post 1015 receives 3 comments. What it is doing, is changing post 1015, even 
   without comments.
    Why is it not picking up if it has 3 comments or any at all
   and changing it anyways? Also, I would actually like for it to work with all 
   posts, I used 1015 as a test.
 *  Thread Starter [eVersatile](https://wordpress.org/support/users/eversatile/)
 * (@eversatile)
 * [9 years, 6 months ago](https://wordpress.org/support/topic/change-status-after-comments/#post-8384374)
 * I am still working on this..
    Now I have this code
 *     ```
       add_action( 'comment_post', 'wpse_make_private_after_3_comments', 10, 2 );
   
       function wpse_make_private_after_3_comments( $comment_ID, $comment_approved ) {
           $comment = get_comment( $comment_ID );
           $post_ID = $comment['comment_post_ID'];
           $comment_count = wp_count_comments( $post_ID );
   
           // If we only have 1 or 2 comments, we'll bail early
           if ( $comment_count < 3 ) {
               return;
           }
   
           $post_data = array(
               'ID' => $post_ID,
               'post_status' => 'private'
           );
   
           wp_update_post( $post_data );
   
           // You might want to add a wp_redirect() here to 
           // so people don't automatically see a 404 page 
           // when the comment saving is complete since the page will be private.
       }
       ```
   
 * but after submitting a comment I get this error ‘Fatal error: Cannot use object
   of type WP_Comment as array’
 *  Thread Starter [eVersatile](https://wordpress.org/support/users/eversatile/)
 * (@eversatile)
 * [9 years, 6 months ago](https://wordpress.org/support/topic/change-status-after-comments/#post-8398523)
 * I got it to work using this snippet
 *     ```
       add_action( 'comment_post', 'wpse_make_private_after_3_comments', 10, 2 );
   
       function wpse_make_private_after_3_comments( $comment_ID, $comment_approved ) {
           $comment = get_comment( $comment_ID );
           $post_ID = $comment->comment_post_ID;
           $comments = wp_count_comments( $post_ID );
   
           // You could also access approved, moderated, spam or trashed comments
           // from the return object of wp_count_comments().
   
           $comment_count = $comments->total_comments;
   
           // If we only have 1 or 2 comments, we'll bail early
           if ( $comment_count < 3 ) {
               return;
           }
   
           $post_data = array(
               'ID' => $post_ID,
               'post_status' => 'private'
           );
   
           wp_update_post( $post_data );
   
           // You might want to add a wp_redirect() here to 
           // so people don't automatically see a 404 page 
           // when the comment saving is complete since the page will be private.
       }
       ```
   

Viewing 11 replies - 1 through 11 (of 11 total)

The topic ‘Change Status after Comments’ is closed to new replies.

## Tags

 * [Comments](https://wordpress.org/support/topic-tag/comments/)
 * [private](https://wordpress.org/support/topic-tag/private/)
 * [status](https://wordpress.org/support/topic-tag/status/)

 * In: [Fixing WordPress](https://wordpress.org/support/forum/how-to-and-troubleshooting/)
 * 11 replies
 * 2 participants
 * Last reply from: [eVersatile](https://wordpress.org/support/users/eversatile/)
 * Last activity: [9 years, 6 months ago](https://wordpress.org/support/topic/change-status-after-comments/#post-8398523)
 * Status: resolved

## Topics

### Topics with no replies

### Non-support topics

### Resolved topics

### Unresolved topics

### All topics
