OSDN Git Service

make 'wp term delete' accept multiple args
authorscribu <mail@scribu.net>
Tue, 14 Jan 2014 18:59:16 +0000 (20:59 +0200)
committerscribu <mail@scribu.net>
Tue, 14 Jan 2014 18:59:35 +0000 (20:59 +0200)
features/term.feature
php/commands/term.php

index c2b6e8e..454455c 100644 (file)
@@ -45,7 +45,7 @@ Feature: Manage WordPress terms
       "test-delete"
       """
 
-    When I run `wp term delete {TERM_ID} post_tag`
+    When I run `wp term delete post_tag {TERM_ID}`
     Then STDOUT should contain:
       """
       Deleted post_tag {TERM_ID}.
index 5bdaeb5..52a8723 100644 (file)
@@ -205,28 +205,31 @@ class Term_Command extends WP_CLI_Command {
         *
         * ## OPTIONS
         *
-        * <term-id>
-        * : ID for the term to delete.
-        *
         * <taxonomy>
         * : Taxonomy of the term to delete.
         *
+        * <term-id>...
+        * : One or more IDs of terms to delete.
+        *
         * ## EXAMPLES
         *
-        *     wp term delete 15 category
+        *     # delete all post tags
+        *     wp term list post_tag --field=ID | xargs wp term delete post_tag
         */
        public function delete( $args ) {
+               $taxonomy = array_shift( $args );
 
-               list( $term_id, $taxonomy ) = $args;
-
-               $ret = wp_delete_term( $term_id, $taxonomy );
+               foreach ( $args as $term_id ) {
+                       $ret = wp_delete_term( $term_id, $taxonomy );
 
-               if ( is_wp_error( $ret ) )
-                       WP_CLI::error( $ret->get_error_message() );
-               else if ( $ret )
-                       WP_CLI::success( sprintf( "Deleted %s %d.", $taxonomy, $term_id ) );
-               else
-                       WP_CLI::error( "Term doesn't exist." );
+                       if ( is_wp_error( $ret ) ) {
+                               WP_CLI::warning( $ret );
+                       } else if ( $ret ) {
+                               WP_CLI::success( sprintf( "Deleted %s %d.", $taxonomy, $term_id ) );
+                       } else {
+                               WP_CLI::warning( sprintf( "%s %d doesn't exist.", $taxonomy, $term_id ) );
+                       }
+               }
        }
 
        /**