Mohmoh submitted a question about how to approve comments that are made on a post in a specific category:
I had used this code to automatically approve comments of a specific category but after the last update wordpress 4.4 this code not work:
add_filter( 'pre_option_comment_moderation', 'auto_aprove_posts_b' ); add_filter( 'pre_option_comment_whitelist', 'auto_aprove_posts_b' ); function auto_aprove_posts_b( $option ) { if( in_category( '20' ) ) return 0; return $option; }do you know how to automatically approve comments in the posts of a specific category?
mohmoh
To do this in WordPress, you’d want to hook into the pre_comment_approved
filter. This filter allows you to adjust the comment’s approval status before adding it to the database.
The filter accepts two parameters:
$approved
– The current approval status before you modify it. This is what we’ll be changing (under certain circumstances).$commentdata
– An array of data about the comment, including the ID of the post it corresponds to. We’ll need to use this when checking the category the post is in.
The code for this is quite simple:
function auto_approve_comments_in_category( $approved, $commentdata ) { $cat_id = 10; // This needs to be the ID of the category you want to approve. // If the post being commented on is in our category, always approve the comment. if( in_category( $cat_id, $commentdata['comment_post_ID'] ) ) { return 1; } // Otherwise, return the original approval status. return $approved; } add_filter( 'pre_comment_approved' , 'auto_approve_comments_in_category' , '99', 2 );
If you want, you could use this same code for other applications. For example: automatically approving comments on one specific post. Here’s how that would look:
function auto_approve_comments_on_post( $approved, $commentdata ) { $post_id = 503; // This needs to be the ID of the post you want to approve comments on. // If the post being commented on is post ID 503, always approve the comments. if( $commentdata['comment_post_ID'] == $post_id ) { return 1; } // Otherwise, return the original approval status. return $approved; } add_filter( 'pre_comment_approved' , 'auto_approve_comments_on_post' , '99', 2 );
One comment