Chat with us, powered by LiveChat

Blogger to WordPress Redirection

The Blogger to WordPress tutorial uses this PHP snippet to redirect visitors on the Blogger blog to the corresponding post on the WordPress site.

When a visitor is redirected from Blogger to WordPress, the blogger slug is contained in the query parameter string. On the WordPress side, this string is parsed and matched against the “blogger_permalink” custom fields on WordPress. If a match if found, the visitor is redirected to the corresponding WordPress post using a 301 redirect.

<?php

/* The Blogger URL passes the permlink in the query string */
function labnol_blogger_query_vars_filter( $vars ) {
  $vars[] = "blogger";
  return $vars;
}

add_filter('query_vars', 'labnol_blogger_query_vars_filter');

/* We take the blogger parameter and map it to the right WordPress post */
function labnol_blogger_template_redirect() {
  global $wp_query;
  $blogger = $wp_query->query_vars['blogger'];
  if ( isset ( $blogger ) ) {
    wp_redirect( labnol_get_wordpress_url ( $blogger ) , 301 );
    exit;
  }
}

add_action( 'template_redirect', 'labnol_blogger_template_redirect' );

function labnol_get_wordpress_url($blogger) {

  /* Extract the blogger slug from the full blogspot.com url */
  if ( preg_match('@^(?:https?://)?([^/]+)(.*)@i', $blogger, $url_parts) ) {

    /* Query the WordPress database to find matching posts */
    $query = new WP_Query ( array ( 
      "meta_key" => "blogger_permalink", "meta_value" => $url_parts[2] ) ); 

    /* if a match is found, get the permalink of the WordPress post */
    if ($query->have_posts()) {
      $query->the_post(); 
      $url = get_permalink(); 
    } 

    wp_reset_postdata(); 

  } 

  /* If permalink is not found, return the blog home page url */
  return $url ? $url : home_url();

}