How to limit posts by category

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.

Topic limit categories posts Wordpress

Category Web


bunu kullan

$author_posts = new WP_Query( array( 'cat' => '1,3', 'post_type' => 'any', 'post_status' => 'publish', 'author' => $user_id, 'fields' => 'ids', 'monthnum' => date( 'm' ), // Whatever the current month is ) );

About

Geeks Mental is a community that publishes articles and tutorials about Web, Android, Data Science, new techniques and Linux security.