/** * Delete settings and data. * * ## OPTIONS * * <what> * : The type of data to be removed. Supported: all|settings|postdata|userdata * * ## EXAMPLES * * wp amt clean all * wp amt clean settings * wp amt clean postdata * wp amt clean userdata * * @synopsis <all|settings|postdata|userdata> */ function clean($args, $assoc_args) { list($what) = $args; if (!in_array($what, array('all', 'settings', 'postdata', 'userdata'))) { WP_CLI::error('Invalid argument: ' . $what . ' (valid: all|settings|postdata|userdata)'); } // Confirmation WP_CLI::line(' '); WP_CLI::line('This commands deletes Add-Meta-Tags data from the database.'); WP_CLI::line('This action is final and cannot be undone.'); WP_CLI::line(' '); echo 'Are you sure you want to do this? Type \'yes\' to continue: '; $handle = fopen('php://stdin', 'r'); $choice = fgets($handle); fclose($handle); if (trim($choice) != 'yes') { WP_CLI::line('Aborting...'); exit; } WP_CLI::line(' '); WP_CLI::line('Proceeding with ' . $what . ' cleanup...'); // Delete AMT settings if ($what == 'settings' || $what == 'all') { delete_option('add_meta_tags_opts'); WP_CLI::line('Deleted settings.'); } elseif ($what == 'postdata' || $what == 'all') { $qr_args = array('numberposts' => -1, 'post_type' => 'any', 'post_status' => 'any', 'orderby' => 'id', 'order' => 'ASC', 'suppress_filters' => true); $posts_arr = get_posts($qr_args); $amt_post_fields = amt_get_post_custom_field_names(); foreach ($posts_arr as $post) { foreach ($amt_post_fields as $amt_post_field) { delete_post_meta($post->ID, $amt_post_field); } } WP_CLI::line('Deleted post custom fields.'); } elseif ($what == 'userdata' || $what == 'all') { $qr_args = array('orderby' => 'login', 'order' => 'ASC', 'fields' => 'all'); $users_arr = get_users($qr_args); $amt_user_fields = amt_get_user_contactinfo_field_names(); foreach ($users_arr as $user) { foreach ($amt_user_fields as $amt_user_field) { delete_user_meta($user->ID, $amt_user_field); } } WP_CLI::line('Deleted user contact info fields.'); } WP_CLI::success('Data clean up complete.'); }
/** * Delete settings, data and metadata cache. * * ## OPTIONS * * <what> * : The type of data to be removed. Supported: all|settings|postdata|userdata|cache * * [--assume-yes] * : Run in non interactive mode. * * ## EXAMPLES * * wp amt clean all * wp amt clean settings * wp amt clean postdata * wp amt clean userdata * wp amt clean cache * wp amt clean cache --assume-yes * * @synopsis <all|settings|postdata|userdata|cache> [--assume-yes] */ function clean($args, $assoc_args) { list($what) = $args; if (!in_array($what, array('all', 'settings', 'postdata', 'userdata', 'cache'))) { WP_CLI::error('Invalid argument: ' . $what . ' (valid: all|settings|postdata|userdata|cache)'); } if ($assoc_args['assume-yes']) { WP_CLI::line(' '); WP_CLI::line('Running in non-interactive mode.'); WP_CLI::line('Proceeding with ' . $what . ' cleanup...'); } else { // Confirmation WP_CLI::line(' '); WP_CLI::line('This commands deletes Add-Meta-Tags data from the database.'); WP_CLI::line('This action is final and cannot be undone.'); WP_CLI::line(' '); echo 'Are you sure you want to do this? Type \'yes\' to continue: '; $handle = fopen('php://stdin', 'r'); $choice = fgets($handle); fclose($handle); if (trim($choice) != 'yes') { WP_CLI::line('Aborting...'); exit; } WP_CLI::line(' '); WP_CLI::line('Proceeding with ' . $what . ' cleanup...'); } // Delete AMT settings if ($what == 'settings' || $what == 'all') { delete_option('add_meta_tags_opts'); WP_CLI::line('Deleted settings.'); } elseif ($what == 'postdata' || $what == 'all') { $qr_args = array('numberposts' => -1, 'post_type' => 'any', 'post_status' => 'any', 'orderby' => 'id', 'order' => 'ASC', 'suppress_filters' => true); $posts_arr = get_posts($qr_args); $amt_post_fields = amt_get_post_custom_field_names(); foreach ($posts_arr as $post) { foreach ($amt_post_fields as $amt_post_field) { delete_post_meta($post->ID, $amt_post_field); } } WP_CLI::line('Deleted post custom fields.'); } elseif ($what == 'userdata' || $what == 'all') { $qr_args = array('orderby' => 'login', 'order' => 'ASC', 'fields' => 'all'); $users_arr = get_users($qr_args); $amt_user_fields = amt_get_user_contactinfo_field_names(); foreach ($users_arr as $user) { foreach ($amt_user_fields as $amt_user_field) { delete_user_meta($user->ID, $amt_user_field); } } WP_CLI::line('Deleted user contact info fields.'); } elseif ($what == 'cache' || $what == 'all') { // Transients may not be cached in the database, but in a different storage backend. // So, here amt_delete_all_transient_metadata_cache() is not used. //$result = amt_delete_all_transient_metadata_cache(); //WP_CLI::line( sprintf('Deleted %d transient metadata cache entries.', $result) ); global $wpdb; // Get the current blog id. $blog_id = get_current_blog_id(); // Construct the options table name for the current blog $posts_table = $wpdb->get_blog_prefix($blog_id) . 'posts'; //var_dump($posts_table); // Construct SQL query that fetched the post IDs. $sql = "SELECT ID FROM {$posts_table} WHERE post_status = 'publish'"; // Get number of cache entries $results = $wpdb->get_results($sql); foreach ($results as $post) { // Delete the metadata cache for this post object amt_delete_transient_cache_for_post(absint($post->ID)); } WP_CLI::line(sprintf('Force purged cached metadata of %d published post objects.', count($results))); } WP_CLI::success('Data clean up complete.'); }