@@ -150,6 +150,7 @@ function ( $params ) {
150150 * @param array<string, mixed> $assoc_args Associative arguments.
151151 */
152152 public function update ( $ args , $ assoc_args ) {
153+ $ args = self ::expand_id_ranges ( $ args , [ $ this , 'get_comment_ids_in_range ' ] );
153154 $ assoc_args = wp_slash ( $ assoc_args );
154155 parent ::_update (
155156 $ args ,
@@ -486,6 +487,7 @@ function ( $comment ) {
486487 * Success: Deleted comment 2341.
487488 */
488489 public function delete ( $ args , $ assoc_args ) {
490+ $ args = self ::expand_id_ranges ( $ args , [ $ this , 'get_comment_ids_in_range ' ] );
489491 parent ::_delete (
490492 $ args ,
491493 $ assoc_args ,
@@ -556,6 +558,7 @@ private function check_server_name() {
556558 * Success: Trashed comment 1337.
557559 */
558560 public function trash ( $ args , $ assoc_args ) {
561+ $ args = self ::expand_id_ranges ( $ args , [ $ this , 'get_comment_ids_in_range ' ] );
559562 foreach ( $ args as $ id ) {
560563 $ this ->call ( $ id , __FUNCTION__ , 'Trashed %s. ' , 'Failed trashing %s. ' );
561564 }
@@ -577,6 +580,7 @@ public function trash( $args, $assoc_args ) {
577580 */
578581 public function untrash ( $ args , $ assoc_args ) {
579582 $ this ->check_server_name ();
583+ $ args = self ::expand_id_ranges ( $ args , [ $ this , 'get_comment_ids_in_range ' ] );
580584 foreach ( $ args as $ id ) {
581585 $ this ->call ( $ id , __FUNCTION__ , 'Untrashed %s. ' , 'Failed untrashing %s. ' );
582586 }
@@ -597,6 +601,7 @@ public function untrash( $args, $assoc_args ) {
597601 * Success: Marked as spam comment 1337.
598602 */
599603 public function spam ( $ args , $ assoc_args ) {
604+ $ args = self ::expand_id_ranges ( $ args , [ $ this , 'get_comment_ids_in_range ' ] );
600605 foreach ( $ args as $ id ) {
601606 $ this ->call ( $ id , __FUNCTION__ , 'Marked %s as spam. ' , 'Failed marking %s as spam. ' );
602607 }
@@ -618,6 +623,7 @@ public function spam( $args, $assoc_args ) {
618623 */
619624 public function unspam ( $ args , $ assoc_args ) {
620625 $ this ->check_server_name ();
626+ $ args = self ::expand_id_ranges ( $ args , [ $ this , 'get_comment_ids_in_range ' ] );
621627 foreach ( $ args as $ id ) {
622628 $ this ->call ( $ id , __FUNCTION__ , 'Unspammed %s. ' , 'Failed unspamming %s. ' );
623629 }
@@ -639,6 +645,7 @@ public function unspam( $args, $assoc_args ) {
639645 */
640646 public function approve ( $ args , $ assoc_args ) {
641647 $ this ->check_server_name ();
648+ $ args = self ::expand_id_ranges ( $ args , [ $ this , 'get_comment_ids_in_range ' ] );
642649 foreach ( $ args as $ id ) {
643650 $ this ->set_status ( $ id , 'approve ' , 'Approved ' );
644651 }
@@ -660,6 +667,7 @@ public function approve( $args, $assoc_args ) {
660667 */
661668 public function unapprove ( $ args , $ assoc_args ) {
662669 $ this ->check_server_name ();
670+ $ args = self ::expand_id_ranges ( $ args , [ $ this , 'get_comment_ids_in_range ' ] );
663671 foreach ( $ args as $ id ) {
664672 $ this ->set_status ( $ id , 'hold ' , 'Unapproved ' );
665673 }
@@ -786,4 +794,27 @@ public function exists( $args ) {
786794 WP_CLI ::success ( "Comment with ID {$ args [0 ]} exists. " );
787795 }
788796 }
797+
798+ /**
799+ * Returns existing comment IDs within the given range.
800+ *
801+ * @param int $start Start of the ID range (inclusive).
802+ * @param int|null $end End of the ID range (inclusive), or null for no upper bound.
803+ * @return int[] List of existing comment IDs.
804+ */
805+ private function get_comment_ids_in_range ( int $ start , ?int $ end ): array {
806+ global $ wpdb ;
807+
808+ if ( null === $ end ) {
809+ return array_map (
810+ 'intval ' ,
811+ $ wpdb ->get_col ( $ wpdb ->prepare ( "SELECT comment_ID FROM {$ wpdb ->comments } WHERE comment_ID >= %d ORDER BY comment_ID ASC " , $ start ) )
812+ );
813+ }
814+
815+ return array_map (
816+ 'intval ' ,
817+ $ wpdb ->get_col ( $ wpdb ->prepare ( "SELECT comment_ID FROM {$ wpdb ->comments } WHERE comment_ID BETWEEN %d AND %d ORDER BY comment_ID ASC " , $ start , $ end ) )
818+ );
819+ }
789820}
0 commit comments