ムーバブルタイム(MT)からワードプレスのインポート

ムーバブルタイム(MT)からワードプレスのインポート

  • 2018-10-23  最終更新日:2018-10-23

今回はムーバブルタイプからワードプレスのインポートについてです。デフォルトで使っている場合の記事は多くありますのでそちらをご参考になさってください。今回はアーカイブテンプレートでアーカイブパスを変更されている場合にインポートするアドレスと異なっているときの対処方法をご紹介します。

ムーバブルタイプでエクスポートしたときにBASENAMEという項目がありますがここがファイル名になります。post_1234という風に出ているかアルファベットで記載されているはずです。

今回は意図的にアーカイブパスを変更していて例えばpostがentryとか時間の数値をアドレスにしている場合はBASENAMEと相違ができますのでそこのところを対処してインポートする方法をご紹介したいと思います。


BASENAMEのアンダーバーとハイフン問題

因みにですが、post_1234がワードプレスにインポートされてpost-1234になってしまうという場合はワードプレスのプラグインフォルダ内のmovabletype-importerフォルダにあるmovabletype-importer.phpを書き換えを行います。(ワードプレスの管理画面からツール-インポートからMovableTypeとTypePadをインストール済み前提になります。)

387行目あたりから以下の通り記載されているはずです。

} else if ( 0 === strpos($line, 'BASENAME:') ) {
        $slug = trim( substr($line, strlen('BASENAME:')) );
        if ( !empty( $slug ) )
          $post->post_name = $slug; // ここを変更する
      } else if ( 0 === strpos($line, 'STATUS:') ) {
        $status = trim( strtolower( substr($line, strlen('STATUS:')) ) );

$post->post_name = $slug;$post->post_name = str_replace( '_', '-', $slug );と書き換えます。以下の通り。

} else if ( 0 === strpos($line, 'BASENAME:') ) {
        $slug = trim( substr($line, strlen('BASENAME:')) );
        if ( !empty( $slug ) )
          $post->post_name = str_replace( '_', '-', $slug ); // 変更後
      } else if ( 0 === strpos($line, 'STATUS:') ) {
        $status = trim( strtolower( substr($line, strlen('STATUS:')) ) );

これでインポートすればWordPress側とMovable TypeのBASENAME(ファイル名)が同じになります。内部リンクでリンクの相違がある場合はこのようにして合わせます。

MTからのインポートファイルが2MB以上ならwp-contentディレクトリにmt-export.txtリネームしてアップロードしてインポートした方がよいです。

アーカイブマッピング対策

さて、ここからが本題です。アーカイブマッピング対策の場合は、ムーバブルタイプのエキスポート部分を修正します。ImportExport.pmのファイルをちょっと変更します。BASENAMEの下にPERMALINKとIDを追記します。

/htdocs/cgi-bin/lib/MT/ImportExport.pm

630行目あたりの#⇒は追加したところです(#⇒矢印は記載しないでください)

    require MT::Template;
    require MT::Template::Context;
    my $tmpl = MT::Template->new;
    $tmpl->name('Export Template');
    $tmpl->text(<<'TEXT');
AUTHOR: <$MTEntryAuthor strip_linefeeds="1"$>
TITLE: <$MTEntryTitle strip_linefeeds="1"$>
BASENAME: <$MTEntryBasename$>
#⇒ PERMALINK: <$MTEntryPermalink$>
#⇒ ID: <$MTEntryID$>
STATUS: <$MTEntryStatus strip_linefeeds="1"$>
ALLOW COMMENTS: <$MTEntryFlag flag="allow_comments"$>
CONVERT BREAKS: <$MTEntryFlag flag="convert_breaks"$>
ALLOW PINGS: <$MTEntryFlag flag="allow_pings"$><MTIfNonEmpty tag="MTEntryCategory">
PRIMARY CATEGORY: <$MTEntryCategory$></MTIfNonEmpty><MTEntryCategories>
CATEGORY: <$MTCategoryLabel$></MTEntryCategories>
DATE: <$MTEntryDate format="%m/%d/%Y %I:%M:%S %p"$><MTEntryIfTagged include_private="1">
TAGS: <MTEntryTags include_private="1" glue=","><$MTTagName quote="1"$></MTEntryTags></MTEntryIfTagged>

この通りに修正した後エクスポートすると例ですが以下のように出力されます。export-000014-2018102300000.txtというダウンロードファイルの一部分です。

AUTHOR: admin
TITLE: タイトルタイトルタイトルサンプルサンプルテストテスト
BASENAME: post_3650
PERMALINK: https://www.its-office.jp/blog/2018/10/231612/
ID: 3650
STATUS: Publish
ALLOW COMMENTS: 1
CONVERT BREAKS: richtext
ALLOW PINGS: 1
PRIMARY CATEGORY: cms
CATEGORY: cms
DATE: 10/23/2018 06:12:28 PM

上記見てもらえればわかりますがBASENAMEとPERMALINKのアドレスが違います。このままワードプレスにインポートするとpost-3650というファイル名になりますが実際のアドレスは231612という数値なので内部リンクしている場合はリンク切れになります。

このような記載が数百とか数千もあると変更が大変なのでここで正規表現で処理を行います。

まず正規表現ができるテキストエディタでエクスポートしてきたファイルを開きます。因みにCotEditorを使っていますがWindowsなら秀丸エディタとかでもできると思います。

検索文字に

BASENAME: ([!-~]+)

と入力して置換は空にします

MT

これでBASENAMEと記載された文字列(post_xxx)は消えたはずです。

さらに検索文字列は以下

PERMALINK: https?://www.its-office.jp/[a-z]+/\d{4}/\d{2}/([!-~]+)/

置換文字列は以下

BASENAME: $1

と記載して変更します。

MT

BASENAME: xxxxという風に変更されているはずです。 これでアーカイブマッピングアドレスに変更できました。後はワードプレスにインポートするだけです。

参考になれば幸いです。


∞Tadashi Suyama∞

ムーバブルタイプ MT インポート エクスポート wordpress
  • このエントリーをはてなブックマークに追加
  • follow us in feedly

サイト内検索

最近の投稿

アイキャッチ
Perlで500エラー!原因は文字コードだけでなく改行コード

あまりcgiは使いたくないのですが使わざるを得ない時があります。仕方なく設置するのですがエラーが出ちゃうんです。なんか知らないけど。 ありがちなのがパーミッションとかパスが問題になるんのですけど...

19 Feb 2022

アイキャッチ
WordPressの標準メールアドレスの変更方法

今回はワードプレス専用のアドレス変更方法をご紹介します。ワードプレスのアドレスはwordpress@~という形で送られてきますが変更可能です。 functions.phpに記載するのですがプラグ...

12 Feb 2022

アイキャッチ
LibSass(node-sass)からDartSassに移行の手順

Sassの遷移は多すぎる今日この頃 Ruby Sass→LibSass→DartSass(いまここ) Ruby SassはSassの最初の実装でしたが、2019年3月26日にサポートが終了しま...

22 Jan 2022

アイキャッチ
明けましておめでとうございます

明けましておめでとうございます。 本年も何卒よろしくお願いいたします。 年末年始は雪でしたね、そこまで積もっていませんが。 {% include adsensearticle.html...

10 Jan 2022

アイキャッチ
そろそろvuejs始める

最近はjQueryよりvueで書いた方が楽ではないかと思い学習中です。 そもそもVuejsはドキュメントが日本語対応なので試しやすいし情報も豊富なので学習しやすいです。 3大フレームワークと呼...

02 May 2021

著者

ウェブエンジニアの須山のブログです。

WEBに関することや個人的に関心のあることについて書きます。主に技術系ブログです。

フッターイメージ