サポート » 使い方全般 » 特定のカテゴリのみのエクスポートとカスタム投稿への移植

  • 解決済 mokeco

    (@mokeco)


    お世話になります。
    現行では投稿の際にカテゴリを指定して投稿していますが、
    今後はカスタム投稿タイプで、カテゴリの指定をせずに投稿できるようにしたいと考えています。その際、これまでの投稿も新しく作ったカスタム投稿タイプに移植をしたいのですが、何か方法はありますでしょうか?

    たとえば、今まで「投稿」からカテゴリ“お知らせ”を選んで投稿していたものを、「お知らせ」カスタム投稿を作ってそこに書き込みたいのですが、その際に過去の書き込みにもさかのぼれるようにしたいのです。よろしくお願いします。

6件の返信を表示中 - 1 - 6件目 (全6件中)
  • モデレーター jim912

    (@jim912)

    mokeco.さん、こんにちは。

    データベースを直接更新する方法なら可能です。
    前提として、MySQLとWordPressのデーターベース構造を理解していることが必要です。

    WordPressのデータベース構造は、下記が参考となります。
    ■WordPress ER図(シングルインストール時)
    http://codex.wordpress.org/images/9/9e/WP3.0-ERD.png

    この中でカテゴリーの情報は、termsとterm_taxonomyテーブル、投稿・固定ページ・カスタム投稿は、posts、それらの所属情報がterm_relationshipsに格納されています。

    記事の投稿タイプを決するのは、postsテーブルのpost_typeになりますので、お知らせカテゴリに属していた投稿のpost_typeをお知らせの投稿タイプのものに変更すれば良いことになります。

    これで、投稿タイプの変更は完了ですが、カテゴリーの所属情報が残るため、term_relationshipsテーブルから、変更した投稿のレコードを削除しておいた方がよいでしょう。

    その後、お知らせカテゴリを削除するのは、管理画面からでも出来ますね。

    なお、クリティカルな作業になりますので、実行する場合は、かならずデータベースのバックアップをとっておいて、いつでも作業前に戻せるようにしておきましょう。

    モデレーター jim912

    (@jim912)

    変更する際に実行するSQL文のサンプルを載せておきます。
    ご自分の環境に合わせて、参考にしてください。

    なお、移行前のカテゴリーに所属する投稿は、複数のカテゴリーに所属していないことが条件です。

    ■投稿タイプの変更
    テーブル接頭辞がwp_で、カテゴリーのスラッグがinformation、投稿タイプのスラッグもinformationの場合

    UPDATE	wp_posts as p,
    	wp_term_relationships as tr,
    	wp_term_taxonomy as tt,
    	wp_terms as t
    SET	p.post_type = 'information'
    WHERE	p.ID = tr.object_id
    AND	tr.term_taxonomy_id = tt.term_taxonomy_id
    AND	tt.term_id = t.term_id
    AND	tt.taxonomy = 'category'
    AND	t.slug = 'information'

    ■投稿タイプ変更後のカテゴリー所属情報削除

    DELETE	tr
    FROM	wp_term_relationships as tr,
    	wp_term_taxonomy as tt,
    	wp_terms as t
    WHERE	tr.term_taxonomy_id = tt.term_taxonomy_id
    AND	tt.term_id = t.term_id
    AND	tt.taxonomy = 'category'
    AND	t.slug = 'information'

    トピック投稿者 mokeco

    (@mokeco)

    jim912さん、ご親切にサンプルコードまでいただき、ありがとうございました。
    提示していただいた方法で、2つのテストサーバ上で実行してみたところ、共にうまく行きました。後日本番環境で実行してみたいと思います。

    トピック投稿者 mokeco

    (@mokeco)

    ごめんなさい、ついでに伺いたいのですが、
    「■投稿タイプの変更」を実行しただけでも見かけ上は問題なく新しい投稿タイプに移行できています。

    そのあとの「■投稿タイプ変更後のカテゴリー所属情報削除」は、何のために行うのでしょうか?
    投稿タイプの変更を実行しただけでは、データベース上には以前の「投稿」から書き込んだ際の残骸が残っている、ということでしょうか?

    モデレーター jim912

    (@jim912)

    mokeco.さん

    うまくいってなによりです。
    投稿タイプ変更後のカテゴリー所属情報削除は、投稿とカテゴリーの繋がっている線を切り離すようなイメージを持っていただくと良いかもしれません。

    これが繋がったままだと、カテゴリーを表示した際に変更した投稿タイプがそのまま表示されてしまうかと思います。

    カテゴリー削除を行えば、一緒に所属情報も消してくれるかもしれませんが、そこまで検証していないもので。。

    トピック投稿者 mokeco

    (@mokeco)

    jim912さん
    なるほど、残骸をなくすというよりは「関係」をなくする、ということですか。
    理解できました。ありがとうございました。

6件の返信を表示中 - 1 - 6件目 (全6件中)
  • トピック「特定のカテゴリのみのエクスポートとカスタム投稿への移植」には新たに返信することはできません。