とっちゃん@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ならではの良さだなぁと実感しました。
今回もとても勉強になりました!
今回は以上となります。
最後まで読んでいただきましてありがとうございました!
それではまた〜✧٩(ˊωˋ*)و✧
コメント