XEで WordPressへ移行する

Last Updated:2019年12月03日| | 12のコメント

XEで WordPressへの移行(前)する

XEで WordPressへの移行作業を週末進行しました。

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

私は今回の作業では、次の項目を WordPressに移動しました。

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

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

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

記事前に

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

XEと WordPress テーブル比較

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

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

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

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

文スラグが割れ問題

記事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から WordPressに移行する!」なら、投稿スラグも「XEで WordPressに移行する!」のように表示されます。その後、上記のコードを削除してリストを更新すると、「XEで-WordPressに移行する」のように、適切に投稿されたslugが更新されます。 すべての記事のリストを一度ロードしなければなら上記のコードが実行されます。 (その後、すべての記事のリストをXNUMXページに表示するコードを一つ作成すると良いでしょう?)

* 注意: 上記のコードは、十分なテストを経ていないため、予期しない問題が発生する可能性があります。 条件を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部分が WordPressで考えているカテゴリとは若干の違いがあるように見えます。 XEサイトで大分類>小分類の概念になっているようで、URLには小分類に該当するスラグが表示されます。

この部分は、 WordPressに移転した場合を仮定したとき、どのようするのが望ましいかを考えました。 WordPressの固有アドレス設定を」カテゴリー/文ID「フォーマットで指定すると、元のXEサイトのURLと同じになるという点に着目して、カテゴリはXEから小分類に該当するもののみに基づいて移転しました。

カテゴリとタグは WordPressで、次のXNUMXつのテーブルに関連しています。

  • wp_terms
  • wp_term_relationships
  • wp_term_taxonomy

もっと詳しく WordPress Codexのドキュメントを参照すると役立ちます。

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

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

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

  • 同じタグを持つ重複した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テーブルにXNUMXつの列(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で掲示板の形式でのカテゴリの場合 WordPressに移転した後、 List category postsのようなプラグインを使用してリスト形式で表示することができます。

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

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

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

テストサイトの構成

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

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

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

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

XEで WordPress 移行し、カテゴリとタグを含む記事の数が正しく表示されず、すべて「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の活用法について学ぶことができるきっかけになりました。 本を通じて身につけた内容を実践に適用する方法を身につけたことが大きな成果であれば、成果とすることができます。 また、 WordPress 構造についてもう少し知ることができる機会になったようです。

추가

ゼロボードで WordPressに移行する場合には、ゼロボードからXEで先に変換した後に WordPressに移転しようとします。 ゼロボードから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や WordPressの特定のカテゴリを KBoard(Kboard)掲示板に移転が可能です。 直接移転を実施してみると、いくつかの考慮すべき事項が発生するが、このような場合は、SQLについて少し知って役立つでしょう。

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

参考に値するサイト:

便利なアプリ:


12のコメント

コメント

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

    応答
  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。

    応答