get_redirect_post_id() static public method

static public get_redirect_post_id ( $url )
コード例 #1
0
 /**
  * Bulk import redirects from URLs stored as meta values for posts.
  *
  * @subcommand import-from-meta
  * @synopsis --meta_key=<name-of-meta-key> [--start=<start-offset>] [--end=<end-offset>] [--skip_dupes=<skip-dupes>] [--dry_run]
  */
 function import_from_meta($args, $assoc_args)
 {
     define('WP_IMPORTING', true);
     global $wpdb;
     $offset = isset($assoc_args['start']) ? intval($assoc_args['start']) : 0;
     $end_offset = isset($assoc_args['end']) ? intval($assoc_args['end']) : 99999999;
     $meta_key = isset($assoc_args['meta_key']) ? sanitize_key($assoc_args['meta_key']) : '';
     $skip_dupes = isset($assoc_args['skip_dupes']) ? (bool) intval($assoc_args['skip_dupes']) : false;
     $dry_run = isset($assoc_args['dry_run']) ? true : false;
     if (true === $dry_run) {
         WP_CLI::line("---Dry Run---");
     } else {
         WP_CLI::line("---Live Run--");
     }
     do {
         $redirects = $wpdb->get_results($wpdb->prepare("SELECT post_id, meta_value FROM {$wpdb->postmeta} WHERE meta_key = %s ORDER BY post_id ASC LIMIT %d, 1000", $meta_key, $offset));
         $i = 0;
         $total = count($redirects);
         WP_CLI::line("Found {$total} entries");
         foreach ($redirects as $redirect) {
             $i++;
             WP_CLI::line("Adding redirect for {$redirect->post_id} from {$redirect->meta_value}");
             WP_CLI::line("-- {$i} of {$total} (starting at offset {$offset})");
             if (true === $skip_dupes && 0 !== WPCOM_Legacy_Redirector::get_redirect_post_id(parse_url($redirect->meta_value, PHP_URL_PATH))) {
                 WP_CLI::line("Redirect for {$redirect->post_id} from {$redirect->meta_value} already exists. Skipping");
                 continue;
             }
             if (false === $dry_run) {
                 WPCOM_Legacy_Redirector::insert_legacy_redirect($redirect->meta_value, $redirect->post_id);
             }
             if (0 == $i % 100) {
                 if (function_exists('stop_the_insanity')) {
                     stop_the_insanity();
                 }
                 sleep(1);
             }
         }
         $offset += 1000;
     } while ($redirects && $offset < $end_offset);
 }