Я использую функцию WordPress wp_kses()
для очистки html перед сохранением содержимого публикации. Я указал, что он должен сохранять все атрибуты div
, которые начинаются с tb-*
. Тем не менее, функция все еще удаляет эти html атрибуты.
Знаете ли вы, почему wp_kses()
удаляет мои атрибуты, когда я сказал это не делать? Может быть, я не могу использовать подстановочные знаки, ie, я не могу использовать tb-*
и должен явно определять все разрешенные атрибуты, как это; tb-foo
, tb-bar
и др. c.? Я на самом деле надеюсь, что нет, потому что у меня есть десятки атрибутов, и я буду добавлять их все время, поэтому для WordPress просто безумно ожидать, что я обновлю код для обработки новых атрибутов каждый раз.
Вот мой код, где он удаляет атрибуты:
$html_filter = array_merge_recursive(wp_kses_allowed_html('post'), ['div' => ['td-*' => 1]]);
$content = wp_kses($content, $html_filter);
wp_update_post([
'ID' => $post_id,
'post_content' => $content,
]);
// if $content = "<div tb-foo=true tb-bar="bar" id="baz"></div>"
// it saves it as <div id="baz"></div>