例えば、こういうテキストをインポートすると、
料理:カメ五郎さん
「ドブ式スープ」って自分で言うなww
美味そうなんだよなあ……
インポート後の記事はこうなっています。
料理:カメ五郎さん
「ドブ式スープ」って自分で言うなww
美味そうなんだよなあ……
タグのところがまるっとない。全てのタグが削られているわけではないので、明らかにフィルタリングされています。
解決方法:functions.phpでフィルタリングを上書きする
ヒントになったのはこちらの記事です。WordPressの怪 – 投稿画面から一部のタグや属性が消えてしまう現象 – | MONSTER DIVE
この案件、マルチサイトなんですよ。 シングルサイトだと、管理者もしくは編集者権限であれば問題なく使用できるのですが、マルチサイトだと、ネットワークの特権管理者権限でないとダメらしいのです。なにゆえ!!?
確かに普通に記事投稿をするのであれば、特権管理者なら問題は起きません。が、インポートだと特権管理者がないと判断されるのか、タグが全部消えてしまうみたいです。ということは、つまり上の記事の「解決方法その2」にあるとおり許可するタグのルールに使いたいタグを追加してやれば良いんですね。
というわけで、以下の通り設定。
function my_wp_kses_allowed_html( $tags, $context ) {
   if ( $context === 'post' ) {
       $tags['script'] = array(
           'src' => true
       );
       $tags['iframe'] = array(
           'width'         => true
           ,'height'       => true
           ,'scrolling'    => true
           ,'frameborder'  => true
           ,'class'        => true
           ,'src'          => true
       );
   }
   return $tags;
}
add_filter( 'wp_kses_allowed_html', 'my_wp_kses_allowed_html', 10, 2 );
本文の投稿時に、scriptタグとiframeタグを許可する設定です。
最初は単純に、
$tags['script'] => true
って書いてみたんですが、それだと、
料理:カメ五郎さん
<script></script>
「ドブ式スープ」って自分で言うなww
美味そうなんだよなあ……
となってしまいました。属性も書き出さないといけないようです。
なにはともあれ、これで無事インポートが出来ました。良かった良かった……
ちなみに:許可タグのリストはどこにあるか
wp-includes/kses.phpで設定されているグローバル変数 $allowedposttags がそれらしいです。まんまの名前ですね。ほんとにホワイトリストだったんだ……
	