XEで WordPressへ移行する

  • Naver ブログを共有する
  • Naver バンドに共有する
  • Facebook 共有する
  • Twitter 共有する
  • 카카오스토리공유하기

XEでワードプレスに移行(前)する

XEでワードプレスに移転する作業を週末進行しました。

幸いなことにHappist様の助けを借りて、思ったより簡単に前のタスクを完了することができました。

私は今回の作業では、次の項目をワードプレスに移動しました。

  • 文(Post)
  • コメント
  • メンバーリスト
  • ヒット
  • カテゴリー
  • コメント
  • 画像(サムネイルの作成)

本格的な前処理をする前に、phpMyAdminにアクセスしてXEとワードプレスのテーブルを比較して、分析して、体系的な計画を立てて進行すると試行錯誤を減らし、時間を節約することができます。

※2019年12月更新:ケイボード掲示板を作ったコスモスファームでXEの移行プラグインを開発してリリースしました。 プラグインを使用すると、非常に簡単にXE /ゼロボード掲示板をワードプレス文(Post)またはケイボード掲示板に移転が可能です。

記事前に

文を移転する場合XEの xe_documents テーブルのコンテンツをワードプレスの wp_posts テーブルにコピーする方式で進行しました。 この二つのテーブルをおよそ比較すると、次のように図示することができます。

XEとワードプレスのテーブルの比較

最初にxe_documentsテーブルの構造をwp_postsと同様に構成された、次の表の名前を変更する方法を採用している(つまり、xe_documentsをwp_postsに名前を変更)。 この場合、前のはされますが、予期せぬいくつかのエラーが発生しました。 だから、最初から再起動してxe_documentsのコンテンツをwp_postsにコピーする方法で行わのでしっかりしました。

XEサイトの記事URL構造がhttp://www.example.com/category/1234式になっていました。 ワードプレスのサイトでもそのままのURLを維持するように移転しました。 この場合、301リダイレクトを使用する必要がありません。

特に移行するXEサイトにYouTubeのビデオを持っているカテゴリーがあったが、このカテゴリ文に含まれているYouTubeは文に直接挿入されたものではなく、他の方法を使用して追加されたものでした。 XEを使用してみなくて、正確な内容は分からないが、ユーザーは、おそらく別のフィールドにYouTubeの動画のリンクを追加すると、本文にYouTubeが表示されているように動作すると思われました。

この部分は、ワードプレスで 高度なカスタムフィールドというプラグインを使用して解決することができました。

文スラグが割れ問題

記事IDを書かslugにコピーすると、簡単ですが、文章スラグに記事のタイトルが表示されるようにしたい場合は、文のタイトルを書かslugにコピーしてみると、エンコードが合わなくて、文字が壊れます。

この場合は、次のようなコードを作成し、テストしてみると、問題が解決されました。

add_action( 'the_post', 'wpse_94856_title_update' );

function wpse_94856_title_update( $post )
{
if ( empty ( $post->post_title ) )
return;

$temp_title = $post->post_title;
$new_title = urldecode($temp_title);
wp_update_post(
array (
'ID'         => $post->ID,
'post_name' => $new_title
)
);

// $post is passed by reference, so we update this property in real time
$post->post_name = $new_title;
}

記事の一覧が更新されると、文のタイトルが「XEでワードプレスに移行する!」であれば文スラグも「XEでワードプレスに移行する!」のようにそのまま表示されます。 次に、上記のコードを削除し、リストを更新すると、「XEで - ワードプレスで - 移行する」のように適切に書かれslugが更新されます。 重要なのは すべての記事のリストを一度ロードしなければなら上記のコードが実行されます。 (その後、すべての記事のリストを1ページに表示するコードを一つ作成すると良いでしょう?)

* 注意: 上記のコードは、十分なテストを経ていないため、予期しない問題が発生する可能性があります。 条件をpost typeに指定すると、より良い結果を得ることです。

この問題をStackoverflowに問い合わせたところ、誰も答えを知ってくれてあきらめていたが、突然の方法が考えてテストしてみるとよくなりますね。

サムネイルの問題

画像は、XEのものをそのまま維持してサムネイル(特性画像)を新たに作成しました。 サムネイルはHappist様のお文に含まれている最初のイメージを特性イメージ(Featured Image)に変換するプラグインを使用する方法を選択しました。

ちなみに文中に src = "./ files / attach / images / ..." 式で画像が追加されている文章がある場合があります。 このような場合、なるべく完全なURLで変更した後進行すると、より良い結果を得ることができるようになります。

UPDATE wp_posts SET post_content = REPLACE(post_content, './files/attach/images', 'http://www.example.com/files/attach/images')

カテゴリー/タグ前

XEサイトの記事URL構造がhttp://www.example.com/category/1234式になっていました。 category部分がワードプレスで考えるのカテゴリーとは若干の違いがあるように見えます。 XEサイトで大分類>小分類の概念になっているようで、URLには小分類に該当するスラグが表示されます。

この部分は、ワードプレスに移転した場合を仮定したとき、どのようするのが望ましいかを考えました。 ワードプレスの固有アドレスの設定を "カテゴリー/文ID"の形式で指定すると、本来XEサイトのURLと同じようになるという点に着目してカテゴリーは、XEで小分類に該当するものだけを基準に移転しました。

カテゴリとタグは、ワードプレスでは、次の3つのテーブルに関連しています。

  • wp_terms
  • wp_term_relationships
  • wp_term_taxonomy

詳細については、 WordPress Codexのドキュメントを参照すると役立ちます。

どのようにXEのカテゴリとマッチングさせるかを悩みました。 私xe_modulesテーブルのmodule_srlを基準にしてカテゴリデータをワードプレスにコピーしました。

タグは、xe_tagsテーブルでtag_srlを基準としました。 ちょっと意外な点は、同じタグに対してtag_srlが複数ある場合があり、タグを移転した後、同じタグに対してslugが変わるようになりました。

重複しているタグのスラッグを同一に変えたい場合は2つの作業をしてくれればと思われる(テストはしていなかったが、特に問題なくなりそうです)。

  • 同じタグを持つ重複したtag_srlを削除します。 この場合、最も低い値を維持することになります。 この作業は、「Delete all Duplicate Rows except for One in MySQL?"文で紹介されたSQLクエリを応用します。
  • 次に記事に含まれている重複したタグのtag_srlを比較して最も低いtag_srlで統一するようにします。 (もし最も低いtag_srlが削除されて文に表示されない場合、問題が発生することもあります。)

メンバーリスト前

メンバーリストの場合、XEで一般会員が記事を作成した場合に、以前のする方が良いようです。 (そうでなければ新規に加入する会員に既存会員のIDが付与されて誤って新規ユーザーが既存の文の作成者となる問題が発生することがあります。)会員情報を、以前させて与えても問題はusermeta値を設定することは、意欲を出すことができないほど、同じユーザーに対してあまりにも多くのフィールドがあるので、すべてのユーザーに対して、「加入者」の役割を付与することに満足していました。

xe_memberの会員情報をwp_usersテーブルにコピーした後xe_memberテーブルに2つの列(meta_key、meta_value)を作成した後xe_memberテーブルで再びwp_usermetaテーブルにコピーする方法で、すべてのユーザーに対して、「加入者」の役割を与えられました。

UPDATE wp_usermeta SET meta_value = 'a:2:{s:10:"subscriber";b:1;s:15:"bbp_participant";b:1;}' where meta_value = 'a:1:{s:10:"subscriber";b:1;}'

その他の考慮事項

XEで掲示板の形式でのカテゴリの場合、ワードプレスに移転した後、 List category postsのようなプラグインを使用してリスト形式で表示することができます。

または、特定のカテゴリーのテンプレートファイルを変更して、掲示板形式で文を表示することも可能です。

注: XEの特定のカテゴリをケイボード掲示板に移転することも可能です。 掲示板に移転する場合は、パスワードが指定されている場合、XE掲示板のパスワードは暗号化されていて、パスワードはそのまま移転されません。 パスワードは、任意に指定して入れる方法や携帯電話の番号やメールアドレスを交換することもあるでしょう。 この作業は、上記のものとは異なって進行されるが、基本的な原理は同じです。

ゼロボード/ XE掲示板でワードプレスケイボード掲示板に移転する作業が必要な場合 ここでサービス(有料)をご依頼することができます。

テストサイトの構成

私はテストサイトを構成して、テストサイトで前のテストをして完了した後に元のサイトに以前ました。 問題は、データ容量が5GBが移ってテストサイトを構成するのに苦労を食べました。 ファイルをダウンロードするために6時間がかかり、これをテストサイトに載せるために、また、その程度の所要され、テストサイトを準備するために、一日がかかりました。(笑)

そしてDBのサイズも150MBが進み、phpMyAdminを使用してImport手間少し時間がかかりました。 データ容量があまりにも大きいため、無制限の容量とトラフィックを提供する iPageの共有ホスティングを使用していました。 共有ホスティングとSSHをサポートしていません。 最初にDBを分割してImportに40分以上かかりました。 中間すべて乗り換えひっくり返し新たしようとするとしてDBを削除して再Importなければならない状況が発生しました。 時間が結構かかるので、時間を節約するために、DBをFTPに乗せてiPageに連絡してDBをImportしてくれと要請しました。 親切にもDBをインポートしてくれたが、実際に見てみると、いくつかのテーブルが欠落していました。 (やはりタダではないか表示します。〓〓)だから仕方なく手動でphpMyAdminにインポート(Import)してテストを行いました。

ただし惜しい点は、テストサイトで以前に完了した後に、実際のサイトにDBを移す過程で少し苦労を食べました。 実際のサイトがカフェ24でホストされていたが、DBアップロード容量が21MB程度ですね。 この設定を高めてみようと努力したが、うまくいかないされてDBを分割して移転をしようとしました。 しかし、奇妙なエラーが出ながら失敗しました。 仕方なく、テーブルごとに分けて、以前の風に時間が結構かかりました。 また、ヒットが保存されたテーブルは、エラーが発生し、その部分は、残りのテーブルを移動した後、該当の文カウンタープラグインをインストールして、再度データを移行するプロセスを実施しました。

移転後のカテゴリー/タグ/コメント数が正しく表示されない場合は、

XEでワードプレス前でカテゴリとタグが含まれている文章の数が正しく表示されず、すべて「0」と表示される問題が発生しました。 この場合、次のコードを実行すると、カテゴリー/タグ数が正しく表示されます。

<?php
include("wp-config.php");
if (!mysql_connect(DB_HOST, DB_USER, DB_PASSWORD)) {  die('Could not connect: ' . mysql_error());  }
if (!mysql_select_db(DB_NAME)) {  die('Could not connect: ' . mysql_error());  }

$result = mysql_query("SELECT term_taxonomy_id FROM ".$table_prefix."term_taxonomy");
while ($row = mysql_fetch_array($result)) {
$term_taxonomy_id = $row['term_taxonomy_id'];
echo "term_taxonomy_id: ".$term_taxonomy_id." count = ";
$countresult = mysql_query("SELECT count(*) FROM ".$table_prefix."term_relationships WHERE term_taxonomy_id = '$term_taxonomy_id'");
$countarray = mysql_fetch_array($countresult);
$count = $countarray[0];
echo $count."<br />";
mysql_query("UPDATE ".$table_prefix."term_taxonomy SET count = '$count' WHERE term_taxonomy_id = '$term_taxonomy_id'");
}

$result = mysql_query("SELECT ID FROM ".$table_prefix."posts");
while ($row = mysql_fetch_array($result)) {
$post_id = $row['ID'];
echo "post_id: ".$post_id." count = ";
$countresult = mysql_query("SELECT count(*) FROM ".$table_prefix."comments WHERE comment_post_ID = '$post_id' AND comment_approved = 1");
$countarray = mysql_fetch_array($countresult);
$count = $countarray[0];
echo $count."<br />";
mysql_query("UPDATE ".$table_prefix."posts SET comment_count = '$count' WHERE ID = '$post_id'");
}
?>
출처: wpbeginner

スクリプトを実行した後に削除するようにします。

おわりに

今回の作業をしながらMySQLの活用法について学ぶことができるきっかけになりました。 本を通じて身につけた内容を実践に適用する方法を身につけたことが大きな成果であれば、成果とすることができます。 また、ワードプレスの構造についてもう少し知ることができる機会になったようです。

追加

ゼロボードからワードプレスに移転しようとする場合には、ゼロボードからXEで先に変換した後に、ワードプレスに移転しようとします。 ゼロボードからXEに変える方法は、Google検索を介して簡単に確認できます。

以下のコメントにも示すように、基本的に次のようなプロセスに続くされます。

  1. export table data to SQL statements
  2. if necessary、modify SQL statements to allow import
  3. import modified SQL statements to new database
  4. run table transformation(DDL)scripts on new database
  5. append data in transformed table to existing table

同様の方法で XEやワードプレスの特定のカテゴリをケイボード(Kboard)掲示板に移転が可能です。 直接移転を実施してみると、いくつかの考慮すべき事項が発生するが、このような場合は、SQLについて少し知って役立つでしょう。

DBの操作は危険であるので、必ずバックアップを行った後に行わしてください。

参考に値するサイト:

便利なアプリ:



12のコメント

  1. XEは、Aホスティング、 WordPressは、Bホスティングにインストールされて、互いに完全に他のサイトを運営しているときAホスティングのXE掲示板文をBホスティングの WordPress 掲示板に移転が可能ですか? コスコパーム有料のプラグインを購入する場合、Bホスティング WordPressにインストールをし、AホスティングのXE掲示板を呼び寄せる概念ですか?
    そうではなく、直接移転をする場合の費用はどのくらいかどうかを気にします。
    現在は、AホスティングXEサイト運営しており、Bのホスティングでワードプレてサイト制作中です。

    応答
    • こんにちは、ワープ初心者様。

      コスモスパーム有料プラグインを使用して、サードパーティのWebホスティングのXE掲示板の書き込みを WordPress 掲示板(KBoard)に移転することが可能です。

      コスモスパームプラグインを使用する方法は、次の記事を参照してみてください:

      https://www.thewordcracker.com/intermediate/xe-%EC%A0%9C%EB%A1%9C%EB%B3%B4%EB%93%9C%EB%A5%BC-%EC%9B%8C%EB%93%9C%ED%94%84%EB%A0%88%EC%8A%A4%EB%A1%9C-%EC%9D%B4%EC%A0%84-%EB%B0%A9%EB%B2%95/

      応答
  2. 本日XEモールで WordPress ショッピングモールで会員DBと掲示板DBを移転する有料サポートお問い合わせをいただきました。 確認お願いします。 :)

    応答
  3. こんにちは。 ゼロボード移行と関連して、しばらく前に、Googleフォームでのお問い合わせをささげ、もしかしたら受けなかったのですか?

    応答
    • こんにちは?

      いつお問い合わせフォームを提出するたのか教えていただけますか?
      (スパムをはじめ)メールがあまりにも多く入ってきて、たまに逃す場合があります。

      応答
      • 私も忘れていました。 笑ちょっと前に戻っておました! 確認お願いしますね。

  4. ちなみにゼロボードを WordPressに移行する場合はこれと関連し文がインターネット上で検索しますが、あまりにも長い間されて確認ができないですね。

    ゼロボードの場合は、次のような方法で試してみます。

    1。 ゼロボード - > XEへの移行 - これに関連して、様々な文が検索されるので注意ください(例; http://m.blog.naver.com/punk1003/30114220952 )

    2。 XE - > WordPressへの移行

    つまり、ゼロボード - > XE - > WordPressで、以前せるよりも容易になります。 XEで WordPressで、以前せるプラグインがあるようだが、あまりにも長い間されて正常に動作しているか分かりません。 また、文IDが変わったり、いくつかの文が欠落している問題が発生することがあります。

    応答
  5. 素晴らしいられます。 パチパチパチ
    1年前にこの記事を見たら苦労を少なくしたのにという思いが自然にしました。
    他の方々本当に良い情報になると思われる。

    応答
  6. 数年前XEをするとき WordPressに移す方法はありますかたくXEをいくらしてみても涼しいダプビョプを見つけていない。
    一番簡単な方法は、XEにもブログツールがあってこっちみんな移し、次に WordPressで、以前のように求める文章を見たのに、このような固守的な方法があったのですね。
    私は読んでも不慣れするだけです。

    応答
    • 昨年 WordPress非掲示板文を WordPress 掲示板プラグイン KBoardに移転しなければならないことがあって多くの研究、海外コミュニティに尋ねるもしました。 しかし、当時としてはどうすべきか意欲を出す文句を言わないですね。 ある程度この側の知識が必要内容が把握がされているようです。

      応答
  7. 参考に値するサイト:

    https://www.postgresql.org/docs/current/static/index.html
    https://www.w3schools.com/sql/sql_default.asp

    メモ:
    While SQL is somewhat standardized、databases and database operations are not so we need to know the specific databases you're working with。 That said、most RDBMS databases have CLI tools to export one or more tables reasonably efficiently as well as CLI tools to import。 Then it's a matter of translating possible incompatibilities of the output to what's needed for the input。

    In general、the process is this:

    1。 export table data to SQL statements
    2。 if necessary、modify SQL statements to allow import
    3。 import modified SQL statements to new database
    4。 run table transformation(DDL)scripts on new database
    5。 append data in transformed table to existing table

    For most RDBMS、you can also choose other export&import formats、like CSV。 If you provide the details of both the databases、you'll get more specific help。

    For example、for two MySQL databases、you can do the following:

    mysqldump -u username -p databaseName tableName> tableName.sql

    Similarly、to import this data to a MySQL database:

    mysql -u username -p -D databaseName <tableName.sql

    If the databases are compatible、then no transformations are needed(step 2)。 To modify the newly imported table、you can do:

    mysql -u username -p -D databaseName <tableNameDDL.sql
    tableNameDDL.sql:

    ALTER TABLE tableName ADD myNewColumn VARCHAR(60);

    To append the data in tableName to your existing table、you can do:

    mysql -u username -p -D databaseName <tableNameAppend.sql
    tableNameAppend.sql

    INSERT INTO existingTableName(c1、c2、c3)
    SELECT c1、c2、c3 FROM tableName;

    You could do your transformations in the old database as well of course with an initial copy of the data into your temporary table prior to export。

    応答