Skip to content

Instantly share code, notes, and snippets.

@PechenkiUA
Last active September 28, 2023 13:40
Show Gist options
  • Star 1 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save PechenkiUA/46f6ecd423de74f66ab49e417e8d6668 to your computer and use it in GitHub Desktop.
Save PechenkiUA/46f6ecd423de74f66ab49e417e8d6668 to your computer and use it in GitHub Desktop.
schema_TinyMCE_init
<?php
function tsm_get_extended_valid_elements() {
$elements = array(
'@' => array(
'id',
'class',
'style',
'title',
'itemscope',
'itemtype',
'itemprop',
'datetime',
'rel'
),
'article', 'div', 'p', 'dl', 'dt', 'dd', 'ul', 'li', 'span',
'a' => array(
'href',
'name',
'target',
'rev',
'charset',
'lang',
'tabindex',
'accesskey',
'type',
'class',
'onfocus',
'onblur'
),
'img' => array(
'src',
'alt',
'width',
'height'
),
'meta' => array(
'content'
),
'link' => array(
'href'
),
'time' => array(
'itemprop',
'content'
)
);
return apply_filters( 'tsm_extended_valid_elements', $elements );
}
function tsm_tinymce_init( $settings )
{
if( !empty( $settings['extended_valid_elements'] ) ) {
$settings['extended_valid_elements'] .= ',';
} else {
$settings['extended_valid_elements'] = '';
}
$result = $settings['extended_valid_elements'];
$elements = tsm_get_extended_valid_elements();
foreach ( $elements as $key => $element ) {
if ( is_array( $element ) && !empty( $key ) ) {
$name = $key;
$attributes = $element;
} else {
$name = $element;
$attributes = array();
}
if ( !empty( $result ) ) {
$result .= ',';
}
$result .= $name;
if ( !empty( $attributes ) ) {
$result .= '[' . implode('|', $attributes) . ']';
}
}
$settings['extended_valid_elements'] = $result;
if ( !isset($settings['valid_children'] ) ) {
$settings['valid_children'] = '';
}
$settings['valid_children'] .= '+body[meta],+div[meta],+body[link],+div[link]';
return $settings;
}
add_filter( 'tiny_mce_before_init', 'tsm_tinymce_init',1,99 );
function allow_itemscope_and_itemprop($allowed, $context) {
$allowed['div']['itemscope'] = true;
$allowed['div']['itemtype'] = true;
$allowed['div']['itemprop'] = true;
return $allowed;
}
add_filter('wp_kses_allowed_html', 'allow_itemscope_and_itemprop', 10, 2);
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment