web-dev-qa-db-fra.com

Comment puis-je limiter le nombre de messages créés par catégorie?

Comment puis-je limiter le nombre de messages créés par catégorie? Et puis supprimez le post le plus ancien et enregistrez celui-là?

J'aimerais faire quelque chose comme ça:

 add_action("load-post-new.php","limit_post_per_category");
  function limit_post_per_category(){
   $category = get_current_category(); //--not sure about this function....//
   if ($category == "category1") { 

    $category_post_count = count_posts($category);
    if($category_post_count>=10){
        delete the oldest post in the category;
        save post;
  }
 }
}
1
user1619177

J'accroche cela à publish_post, de sorte que vous ne jouez pas avec les brouillons, etc.

Et vous devez tenir compte de plusieurs catégories, compter le nombre de messages dans chacune et supprimer tout ce qui dépasse 10.

Peut-être que quelque chose comme cela vous mènera dans la bonne direction. Peut-être besoin de quelques ajustements, la plupart du temps non testés.

function on_post_publish( $ID, $post ) {

    $cat = get_the_category( $ID ); //returns array of categories

    foreach ($cat as $c) {    //doing the rest for each cat in array
        $args = array(
                    'orderby'  => 'post_date',   //using the post date to order them
                    'order'     => 'ASC',       // putting oldest at first key
                    'cat'       => $c,          // only of the current cat
                    'posts_per_page'  => -1,   //give us all of them
                    'fields' => 'ids'         //only give us ids, we dont want whole objects
            );
       $query = new WP_Query( $args );

       $count = $query->post_count;         //get the WP_Queries post_count object value

       if ($count > 10) {                         // if that value is more than 10
            $id_to_delete = $query->posts[0];    //get oldest post from query
            wp_delete_post( $id_to_delete );    //delete it
       }


    }
    wp_reset_postdata(); //resetting to main query just in case


}

add_action(  'publish_post',  'on_post_publish', 10, 2 );
0
hwl