Дефолтный редактор WordPress удаляет теги стиля и тег html

Вопрос или проблема

Я работаю в области админки WP, и там есть текстовое поле, использующее стандартный редактор WP, не TinyMCE. Стандартный редактор WP удаляет тег <style> и также другие HTML-теги. Я называю это стандартным редактором WP, но, возможно, он официально называется как-то иначе? Это редактор с двумя вкладками в правом углу (Визуально, Текст).

Есть ли способ предотвратить удаление всех HTML-тегов этим редактором?

Контент, который я добавляю в редактор WP, используется в исходящих электронных письмах, поэтому это на самом деле полный HTML-документ, и именно поэтому я пытаюсь сохранить форматирование и HTML-теги.

Я заметил, что когда я переключаюсь с вкладки “Текст” на вкладку “Визуально”, многие HTML-теги удаляются.

WordPress имеет возможность пользователя под названием unfiltered_html. Любой пользователь с возможностью unfiltered_html может размещать любой HTML, который он хочет, включая теги <script>.

Из соображений безопасности возможность unfiltered_html по умолчанию предоставляется только администраторам (в WordPress Multisite она предоставляется только супер администраторам).

Если вам нужно добавить возможность unfiltered_html некому (супер) администратору, вы можете использовать WP_User::add_cap() для ее добавления пользователю:

add_action( 'admin_init', 'wpse_393657_grant_user_unfiltered_html' );
function wpse_393657_grant_user_unfiltered_html() {
    $user = get_user_by( 'login', 'my_username' );
    if ( ! user_can( $user, 'unfiltered_html' ) ) {
        $user->add_cap( 'unfiltered_html', true );
    }
}

…или WP_Role::add_cap(), чтобы добавить это к роли (например, редактор).

add_action( 'admin_init', 'wpse_393657_grant_role_unfiltered_html' );
function wpse_393657_grant_role_unfiltered_html() {
    $role = get_role( 'editor' );
    if ( ! $role->has_cap( 'unfiltered_html' ) ) {
        $role->add_cap( 'unfiltered_html', true );
    }
} 

(Эти фрагменты кода не тестировались и предназначены для того, чтобы послужить для вас отправной точкой.)

Обратите внимание, что назначения возможностей являются постоянными (т.е. записываются в базу данных), и пользователь или роль будут сохранять возможность unfiltered_html до тех пор, пока вы ее не отозвёте.

Ответ или решение

Устранение проблемы с удалением тегов HTML и