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