301 Weiterleitungscode

Ich versuche derzeit, einen subdomain.blogger.com-Blog auf eine Domain umzuleiten, die sich auf meiner gehosteten WordPress-Installation befindet. Der folgende Code soll eine 301-Weiterleitung senden und dann diesen bestimmten Beitrag in meinem Blog erscheinen lassen, aber er scheint den Benutzer nur auf die Homepage und nicht auf den entsprechenden Blog-Post zu verweisen.

/************** 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 ***********************/ 

Meine WordPress-Permalink-Struktur wird mit dem Wert benutzerdefiniert festgelegt:

 /%year%/%monthnum%/%postname%.html 

Jede Hilfe würde sehr geschätzt werden.

Solutions Collecting From Web of "301 Weiterleitungscode"

Angenommen, die URL-Analyse ist korrekt und die Daten sind korrekt in der database eingerichtet. Ich denke, Ihre SQL-Abfrage ist falsch. Mein Vorschlag ist, dass Sie es ersetzen, indem Sie wp_query() api mit den relevanten Parametern aufrufen.

Ein anderer Vorschlag, der kein Bug sein könnte, ist die Verwendung von guid, da es keine zuverlässige Quelle für eine Postadresse ist. Es ist besser, die Post-ID zu erhalten und get_permalink() zu verwenden, um seine URL zu erhalten