我当前正在尝试重定向子域。博客作者com博客到位于我的托管WordPress安装上的域。下面的代码应该发送301重定向,然后让特定的帖子出现在我的博客上,但它似乎只是将用户引导到主页,而不是相应的博客帖子。
/************** 301 REDIRECTION ***********************/
function labnol_blogger_query_vars_filter( $vars ) {
  $vars[] = "blogger";
  return $vars;
}
add_filter(\'query_vars\', \'labnol_blogger_query_vars_filter\');
 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_slug) {
  global $wpdb;
  if ( preg_match(\'@^(?:https?://)?([^/]+)(.*)@i\', $blogger_slug, $matches) ) {
   $q = "SELECT guid FROM $wpdb->posts LEFT JOIN $wpdb->postmeta
        ON ($wpdb->posts.ID = $wpdb->postmeta.post_id)
        WHERE $wpdb->postmeta.meta_key=\'blogger_permalink\'
        AND $wpdb->postmeta.meta_value=\'$matches[2]\'";
   $wp_url = $wpdb->get_var($q);
  }
  return $wp_url ? $wp_url : home_url();
 }
 /************** 301 REDIRECTION ***********************/
 我的Wordpress permalink结构设置为自定义,值为:
/%year%/%monthnum%/%postname%.html
 任何帮助都将不胜感激。
 
                    最合适的回答,由SO网友:Mark Kaplun 整理而成
                    假设url解析是正确的,并且数据实际上在DB中设置正确,我认为您的SQL查询是错误的。我的建议是你打电话来代替它wp_query() api和相关参数。
另一个可能不是bug的建议是不要使用guid,因为它不是发布地址的可靠来源。最好获取帖子ID并使用get_permalink() 获取其url