it-swarm.com.de

Leitet von Tumblr zu New um WP

Ich habe eine Site von Tumblr zu WordPress migriert und konnte den gesamten Inhalt (in Teilen) mit dem FeedWordPress-Plugin rüberbringen. Ich versuche jetzt, die alte Permalink-Struktur dazu zu bringen, dynamisch umzuleiten.

Das Plugin hat ein benutzerdefiniertes Feld mit dem alten Tumblr-Permalink hinzugefügt (syndication_permalink ist der Name des Feldes). Gibt es eine Funktion, die ich mit wp_redirect schreiben kann, um nach diesem Feld zu suchen, und wenn ja, auf die neue Permalink-URL umzuleiten?

2
Norcross

Hey, vielleicht hast du Glück mit einem vorherigen Plugin, das ich geschrieben habe ( hier ist der Code selbst ). Es handelt sich um ein Weiterleitungs-Plugin, das die eingehende URL überprüft, sie mit der Postmeta-Tabelle vergleicht, um eine 404 zu erstellen, und den Benutzer weiterleitet, wenn eine Übereinstimmung gefunden wird.

Wenn Sie die gesamte URI für einen Beitrag im benutzerdefinierten Feld gespeichert haben, sieht sie möglicherweise folgendermaßen aus:

/**
 * Redirect old Tumblr URLs to new WP if the URI exists in the database
 */
function tumblr_legacy_redirect() {
    global $wpdb; // We're going to use this for the db lookup

    // Only run this lookup on URLs that are going to 404 anyway
    if ( is_404() ) {

        // We're getting the incorrect URI in hopes that it's an old Tumblr link
        $requested_url = $_SERVER['SERVER_NAME'] . $_SERVER['REQUEST_URI'];

        // Prepare the query so we protect ourselves against bad SQL queries
        $query = $wpdb->prepare( "SELECT post_id FROM $wpdb->postmeta WHERE meta_key='syndication_permalink' AND meta_value='%s'", $requested_url );
        $post_id = $wpdb->get_results( $query, 'ARRAY_N' );
        // Catch if there are duplicate results in the database
        $post_id = $post_id[0][0];

        // Build the redirect if the post_id exists
        if ( $new_url = get_permalink( $post_id ) ) {
            wp_redirect( $new_url, 301 );
        } else {
            return;
        }

   } // END - if ( is_404() )

} // END - tumblr_legacy_redirect()

// A good place for our template redirect to hook into
add_action( 'template_redirect', 'tumblr_legacy_redirect' );

Das Wichtigste ist, dass ich den Code noch nicht getestet habe. Lassen Sie es mich wissen, wenn Sie auf Fehler stoßen!

1