私はTumblrからWordPressにサイトを移行し、FeedWordPressプラグインを使用してすべてのコンテンツを(分割して)取得することができました。私が今やろうとしているのは、古いパーマリンク構造を動的にリダイレクトすることです。
プラグインは古いTumblrのパーマリンクを持つカスタムフィールドを追加しました(syndication_permalinkはフィールドの名前です)。このフィールドをチェックするためにwp_redirectを使って書くことができる関数はありますか、そしてもしそうなら新しいパーマリンクURLにリダイレクトしますか?
こんにちは、私が書いた 前のプラグインで運が良かったかもしれません ( ここでコード自体を示します )。入ってくるURLを調べ、404を生成しようとしている場合はpostmetaテーブルと照合し、一致するものが見つかった場合はユーザーをリダイレクトするリダイレクトプラグインです。
投稿のカスタムフィールドに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' );
警告は、私が実際にコードをテストしていないということですので、あなたが何らかのエラーに遭遇したかどうか私に知らせてください!