从Tumblr重定向到新的WP

时间:2010-11-16 作者:Norcross

我将一个站点从Tumblr迁移到WordPress,并能够使用FeedWordPress插件获得所有内容(部分)。我现在尝试的是让旧的permalink结构动态重定向。

该插件使用旧的Tumblr permalink添加了一个自定义字段(syndication\\u permalink是该字段的名称)。我是否可以使用wp\\u redirect编写一个函数来检查此字段,如果是,则重定向到新的永久链接URL?

1 个回复
SO网友:Daniel Bachhuber

嘿,你可能会很幸运prior plugin I wrote (here\'s the code itself). 这是一个重定向插件,它可以查看传入的URL,如果要生成404,则根据Posteta表进行检查,如果找到匹配项,则重定向用户。

如果将整个URI存储在帖子的自定义字段中,它可能看起来像:

/**
 * 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\' );
需要注意的是,我还没有实际测试代码,所以如果您遇到任何错误,请告诉我!

结束

相关推荐

Slug is redirecting to 404

我有一个页面叫做菜谱。我将其更改为Recipes\\u old并更改了slug,以便创建一个新的Recipes页面。当我创建新配方页面时,slug被正确定义为/Recipes/但我无法访问该页面,WordPress正在将所有请求重定向到/Recipes\\u old/如何删除重定向?我已经删除了Recipes\\u old和Recipes。不过,slug仍在重定向。