wp_post_insert()
を使用して投稿を挿入しています。そして私の投稿の内容は次のようになります:
<img src="data:image/png;base64, iVBORw0KGgoAAAANSUhEUgAAAN4AAAB6CA { ... }
しかし、挿入プロセスでは、Wordpress removes
データ属性です。したがって、上記のコードは次のようになります。
<img src="image/png;base64, iVBORw0KGgoAAAANSUhEUgAAAN4AAAB6CA { ... }
私はこのようなものを試しましたが運がありません:
function my_filter_allowed_html($allowed, $context){
if (is_array($context)) {
return $allowed;
}
if ($context === 'post') {
$allowed['img']['data'] = true;
$allowed['src']['data'] = true;
}
return $allowed;
}
add_filter('wp_kses_allowed_html', 'my_filter_allowed_html', 10, 2);
どうすればこれを回避できますか?
naththedeveloper からStackOverflow answered に感謝し、うまくいきました。
さて、これは見つけるのが悪夢でしたが、WordPress
wp_insert_post
からフックするコードを調べた結果、解決したと思います。これをfunctions.php
ファイルを確認し、機能することを確認します。
add_filter('kses_allowed_protocols', function ($protocols) {
$protocols[] = 'data';
return $protocols;
});
本質的にWordPressの内部には、コンテンツ内のURLのプロトコルをチェックし、望ましくないURLを取り除くフィルターがあります。デフォルトでは、サポートされているリストはデータプロトコルをサポートしていません。上記の関数は、それをサポートされるプロトコルのリストに追加するだけです。
このフィルターは、管理者の場合は実行されません。おそらくログアウトしたときにのみこの問題が発生するのはこのためです。
研究ありがとうございます。