ムーバブルタイム(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

サイト内検索

最近の投稿

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

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

02 May 2021

アイキャッチ
追い風CSS(tailwindcss)が結局楽かも

最初にtailwindcssのv1が出た頃はまだbootstrapで良いかな。 htmlに入れるクラスタグが多過ぎと思っていました。あまり良い印象はなかったです。 時は過ぎいろいろと触っていると...

29 Apr 2021

アイキャッチ
エラー処理について

COJPドメンを取得する際に「登記年月日」という項目があります。 その項目通り登記した年月日を入れる訳ですが、なぜかエラーが出ました。 半角英数字にして下さいというよくあるエラーです。当然半角英...

24 Jan 2021

アイキャッチ
javascriptのundefinedの判定

jqueryで高さの数値をとって足し算をしていたらエラーも出ずに動かないということになったので調べてみました。 ワードプレスで管理画面のアドミンバーが一度ログインするとフロント画面でも表示される...

17 Jan 2021

アイキャッチ
Webpack5にアップデートしてエラーの対処方法2つ

webpack4(4.41.5)から webpack5(5.12.1)にあげました。 特に難しい設定は行っておらず主にscssと共通モジュールの設定だけで使っているのですがそれでもエラーが出たの...

09 Jan 2021

著者

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

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

フッターイメージ