【WordPress】「Really Simple CSV Importer」で苦戦したこと【その2】

とっちゃん@nyanco! です。

WordPressのプラグイン「Really Simple CSV Importer」で苦戦したこと【その2】です。

▼関連記事はこちら
【WordPress】「Really Simple CSV Importer」で苦戦したこと – nyanco! ブログ

プラグイン「Really Simple CSV Importer」を使って投稿記事を複数一括登録しようとすると、以下のようなエラーメッセージが出ました。

CSVファイルからの投稿タイプ値は、データベース内の既存のデータと一致しません。
post_id: 1002、post_type(csv): xxxxxxxxxxxxx、post_type(db): attachment

20件登録しようとしたのですが、なぜか1つおきにエラーが出ており、半分の10件しか登録ができないという状況でした。

何度か試しましたが、バラバラにエラーが出てるならまだしも、こうも綺麗に1記事おきにエラーが出るのは何かおかしい…ということで調べてみると、見つけました!

▼WordPressフォーラムで、プラグインの作者様が答えてくれていました。

▼こちらも参考になった記事なのでリンクしておきます

このエラーがおきる条件としては以下の2つ。

  • 「post_id」を指定している
  • 「post_thumbnail(アイキャッチ画像)」を指定している

この2つの条件が重なると起きるエラーのようです。

エラーの原因としては、「アイキャッチ画像」を指定すると、投稿記事そのものの「post_id」とは別の「post_id」が勝手に割り当てられてしまうから。

「post_id」という名称から「投稿記事」のみに割り当てられるIDのように思うのですが、そうでもないようで「アイキャッチ画像」の固有IDとしても使われるようです。

例として、以下のCSVを流し込んだとします。

post_id post_title post_thumbnail
1001 テスト1 http://xxxxxx
1002 テスト2 http://xxxxxx
1003 テスト3 http://xxxxxx
1004 テスト4 http://xxxxxx

上記の例だと、「post_id:1001」の記事がアイキャッチ画像を含んでいるので、登録された時点で「post_id:1002」がアイキャッチ画像のIDとして使われてしまい、次の「テスト2」というタイトルの記事で使うはずだった「post_id:1002」は投稿記事のIDとしてはもう使えなくなっているのでエラーが起きる、という感じです。

この挙動はWordPressの仕様でどうしようもなく、対策としては下記のように「post_id」を1つ飛ばしに指定すると上手くいきました。

post_id post_title post_thumbnail
1001 テスト1 http://xxxxxx
1003 テスト2 http://xxxxxx
1005 テスト3 http://xxxxxx
1007 テスト4 http://xxxxxx

うーん、こんなの自力ではどんなに時間かけても分からなかっただろうなぁ…

大抵の問題は検索したら解決策が見つかるというのは、たくさんのユーザーが使っているWordPressならではの良さだなぁと実感しました。

今回もとても勉強になりました!

今回は以上となります。
最後まで読んでいただきましてありがとうございました!
それではまた〜✧٩(ˊωˋ*)و✧

コメント