サポート » 使い方全般 » サイト移転時にユーザーIDがシャッフルされた

  • 解決済 gakubusi

    (@gakubusi)


    ユーザーIDを書き換える方法を求めています。

    ドメイン変更に伴うエクスポート、もしくはインポート時に
    ユーザーIDがシャッフルされてしまいました。

    元のサイトでは、use_id=3だった人の記事が
    現在のサイトではuser_id=2となっているようなことが、
    ユーザー全員の間で多々起こっており、
    支障をきたしています。

    いろいろな問題を乗り越えて現在の方法でエクスポート、インポートを行ったため、
    エクスポート、インポートをやり直すのではなく、
    ユーザーIDを書き換える方法を求めています。

    不躾で申し訳ございませんがどなたかご回答よろしくお願いいたします。

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

    (@jim912)

    まず、前提条件として法則性があることが必須となります。この法則性とは、use_id=3 だった人の記事が一律user_id=2になっているということで、user_id=3だった人の記事が、user_id=2になっていたり、user_id=4になっていたり、まちまちである場合は1記事づつ戻すしかないと思われます。

    法則性がある場合は、以下のコードで変更後のID2のユーザーの記事をID3のユーザーに付け替えることが可能です。

    global $wpdb;
    $wpdb->update( $wpdb->posts, array( 'post_author' => 3 ), array( 'post_author' => 2 ), array( '%d' ), array( '%d' )  );

    ただし、ユーザーID3の記事がユーザーID2に、ユーザーID2の記事がユーザーID1に、ユーザーID1の記事がユーザーID3になっているような場合は注意が必要です。このような状況で、上記のコードを実行した場合、ユーザーID3の記事に、ユーザーID3の記事とユーザーID1の記事であるべきものが混在してしまい切り分けができなくなってしまいます。
    このようなケースにおいては、一旦1003などのユーザーIDが存在しないIDに待避させておいて、ユーザーID3の変更処理を行った後、改めて1003から3への変更を行う必要があります。

    1. ユーザーID2の記事をユーザーID1003に待避
    2. ユーザーID1の記事をユーザーID2に変更
    3. ユーザーID3の記事をユーザーID1に変更
    4. ユーザーID1003に待避させていた記事をユーザーID3に変更

    また、これらの処理は基本的に戻しが効かないと考えてください。
    ですので、バックアップを取り、いつでも戻せる状態にした上で、綿密に計画を練って実施する必要があります。

    トピック投稿者 gakubusi

    (@gakubusi)

    jim912様

    有難うございます。
    上記の方法に沿って取り組んでみます。

    お手数かけますが、
    書き換えるファイル名を教えていただけますか?
    よろしくお願いいたします。

    トピック投稿者 gakubusi

    (@gakubusi)

    テーマは、「twentyfourteen」です。

    global $wpdb;
    で検索すると、いろいろ情報があり勉強になりますよ。

    トピック投稿者 gakubusi

    (@gakubusi)

    有難うございました。
    無事ユーザーIDの書き換えを行うことができました。

5件の返信を表示中 - 1 - 5件目 (全5件中)
  • トピック「サイト移転時にユーザーIDがシャッフルされた」には新たに返信することはできません。