こんにちは、Heywaです。
前回に引き続き、「Really Simple CSV Importer」についての話題になります。
今回は、私がCSVのインポートで詰まった点について書かせていただきます。
同じように詰まっている方がいらっしゃれば、参考になればと思います。
Really Simple CSV Importerで記事の動画が挿入されない!
詰まったのは、記事中に動画を埋め込みたい場合です。
私がやりたかったのは、以下のようにVineの動画を記事に入れ込みたかったのですが、
これがうまく行きません。
具体的には、以下のようにCSVに記載してやるのですが、
"csv_post_title","csv_post_date","csv_post_type","csv_post_categories","csv_post_tags","csv_post_post","csv_post_excerpt","csv_post_author" "test inport1","2016-07-14 00:00:00","post","Test","Test","<br><iframe src=""https://vine.co/v/5WvdIEvMOap/embed/simple"" width=""300"" height=""300"" frameborder=""0""></iframe><script src=""https://platform.vine.co/static/scripts/embed.js""></script>","抜粋抜粋抜粋","TestUser"
インポートは正常終了しますが、記事の内容には何も表示されません。
まあググればすぐに答えが出てくるだろうとたかをくくって調べ始めましたが、
これがなかなかどうして、答えにたどり着くのが用意ではありませんでした。
(Google先生は時に、「自ら学べ」と未熟な私に答えてくれます。Awesome!)
試してみたこと
①埋め込んだコードが間違っているのではないか
まず疑ったのは、URLの埋め込み用のコードが間違っているのではないかということ。
確認しましたが、あっていました。
②特殊文字がエスケープされてない
まずはじめに疑ったのは、ダブルクォーテーション(”)やカンマ(,)が適切にエスケープされていないのではないかということです。
例えばダブルクォーテーションを記事中に含む場合、「””」や「\”」として記載しなければなりません。
確認してみましたが、上述の通り、うまく記載されていました。
③デバッガアドオンを導入してみて結果を確認してみる
こちらは前回の記事に書かせていただきました。
デバッガを入れて試してみたのですが、正常にインポートされているように見えます。
④別のプラグインを導入して試してみる
「CSV-importer」という別のプラグインを試してみましたが、こちらも正常にインポートされます。
……とまあ、いくつか試してみたのですが、原因わからず。
諦めてCSV-importerを使おうかとも考えたのですが、
踏ん切りが付かず調べ続けていたところ、
原因らしきところに行き着きました。
結論:HTMLタグが自動でサニタイジング(エスケープ)されている。
上記の③より、記事を投稿する直前まではうまく行っていることがわかりましたので、
投稿するときにHTMLタグがサニタイジングされてしまっているのでは?
と思い調べてみたところ、ビンゴでした。
プラグインの、「rs-csv-importer.php」の記述について、
378~384行目を以下のように置き換え、サニタイジングされないようにしたところ、
うまくいくようになりました。
置換前
// save post data if ($class && class_exists($class,false)) { $importer = new $class; $result = $importer->save_post($post,$meta,$tax,$post_thumbnail,$is_update); } else { $result = $this->save_post($post,$meta,$tax,$post_thumbnail,$is_update); }
置換後
// save post data if ($class &amp;&amp; class_exists($class,false)) { $importer = new $class; kses_remove_filters();//sanitize_post()を無効にする $result = $importer-&gt;save_post($post,$meta,$tax,$post_thumbnail,$is_update); kses_init_filters(); } else { kses_remove_filters();//sanitize_post()を無効にする $result = $this-&gt;save_post($post,$meta,$tax,$post_thumbnail,$is_update); kses_init_filters(); }
上記のように変更して再度試してみたところ、
うまくいくようになりました。一安心です。
終わりに
以上が僕がCSVのインポートでハマった時に試したことです。
少しでもみなさんのお役に立てれば幸いです。
このプラグインでは、他でもインポートに躓くポイントが多いので、
機会があればまとめていきたいと思います。
Heywaでした。
コメント
That’s a wehoothluglt–ut answer to a challenging question