it-swarm.com.de

301 Weiterleitungscode

Ich versuche gerade, ein subdomain.blogger.com-Blog zu einer Domain umzuleiten, die sich in meiner gehosteten WordPress-Installation befindet. Der folgende Code soll eine 301-Weiterleitung senden und dann diesen bestimmten Beitrag in meinem Blog anzeigen. Er scheint den Benutzer jedoch nur auf die Startseite und nicht auf den entsprechenden Blogbeitrag weiterzuleiten.

/************** 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 ist auf Benutzerdefiniert mit dem folgenden Wert festgelegt:

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

Jede Hilfe wäre sehr dankbar.

1
Camrin Parnell

Unter der Annahme, dass die URL-Analyse korrekt ist und die Daten tatsächlich korrekt in der Datenbank eingerichtet sind, halte ich Ihre SQL-Abfrage für falsch. Mein Vorschlag ist, dass Sie es ersetzen, indem Sie wp_query() api mit den relevanten Parametern aufrufen.

Ein weiterer Vorschlag, der möglicherweise kein Fehler ist, ist, guid nicht zu verwenden, da es keine zuverlässige Quelle für eine Postadresse ist. Es ist besser, die Beitrags-ID abzurufen und die URL mit get_permalink() abzurufen

0
Mark Kaplun