1

I was wondering if there is a way to make this code limit by category. In other words, if user A has already published 10 posts in category A then he can keep the new ones as drafts in category A or post another 10 in category B.

*
* @param array $data                An array of slashed, sanitized, and processed post data.
* @param array $postarr             An array of sanitized (and slashed) but otherwise unmodified post data.
* @see https://developer.wordpress.org/reference/functions/wp_insert_post/#parameters
* @return {[type]}          [description]
*/
function kia_limit_posts( $data, $postarr )  {

  if ( isset( $data['post_type'] ) && 'post' === $data['post_type'] ) {
  
      $posts_per_month = 10; // Could be set as an updatable option
      $user_id         = get_current_user_id();
      
      // Number of posts in current month by this user
      $author_posts = new WP_Query( array(
          'post_type'     => 'any',
          'post_status'   => 'publish',
          'author'        => $user_id,
          'fields'        => 'ids',
          'monthnum'      => date( 'm' ), // Whatever the current month is
      ) );
      
      $author_post_count = $author_posts = $author_posts->post_count + 1; // Add current post
      
      if( $author_post_count > $posts_per_month ) {
          $data['post_status'] = 'draft';
      }
  
  }
  return $data;
  
}
add_filter( 'wp_insert_post_data', 'kia_limit_posts', 10, 2 );

Thank you in advance.

New contributor
ACE is a new contributor to this site. Take care in asking for clarification, commenting, and answering. Check out our Code of Conduct.
2
  • What is the problem with your current code? – kero Feb 23 at 10:34
  • 1
    @kero this code limits posts from any category, but I want to limit it by category. like user 1 is able to post only 10 posts in Cat 1, then he can also post another 10 in Cat 2 or wait till time is up – ACE Feb 23 at 15:15

Your Answer

ACE is a new contributor. Be nice, and check out our Code of Conduct.

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Browse other questions tagged or ask your own question.