虽然@s\\u ha\\u dum的解决方案在自定义插件页面上运行良好,但如果在调用第一个编辑器实例后在post editor页面上使用TinyMCE,它将失败,因为它可能会影响所有编辑器,或者至少会影响同一页面上稍后的编辑器。TinyMCE仅在第一次运行时将自定义样式解析为其设置。
如何删除的自定义样式one editor only?
假设我们在仅使用静态方法的类中用富编辑器替换摘录框:
wp_editor(
self::unescape( $post->post_excerpt ),
\'excerpt\', // $editor_id
array (
\'textarea_rows\' => 15
, \'media_buttons\' => FALSE
, \'teeny\' => TRUE
, \'tinymce\' => TRUE
, \'first_init\' => TRUE
)
);
要删除一个特殊编辑器ID的自定义样式,我们可以筛选
teeny_mce_before_init
如果我们已经设置
\'teeny\' => TRUE
和
tiny_mce_before_init
否则
看见_WP_Editors::editor_settings()
:
// For people who really REALLY know what they\'re doing with TinyMCE
// You can modify $mceInit to add, remove, change elements of the config before tinyMCE.init
// Setting "valid_elements", "invalid_elements" and "extended_valid_elements" can be done through this filter.
// Best is to use the default cleanup by not specifying valid_elements, as TinyMCE contains full set of XHTML 1.0.
if ( $set[\'teeny\'] ) {
$mceInit = apply_filters(\'teeny_mce_before_init\', $mceInit, $editor_id);
} else {
$mceInit = apply_filters(\'tiny_mce_before_init\', $mceInit, $editor_id);
}
在这个例子中
teeny_mce_before_init
, 我们需要一个简单的助手方法:
public static function no_custom_css( $settings, $editor_id )
{
\'excerpt\' === $editor_id and $settings[\'content_css\'] = \'\';
return $settings;
}
现在我们在调用之前将其注册为回调
wp_editor()
:
add_filter( \'teeny_mce_before_init\', array ( __CLASS__, \'no_custom_css\' ), 10, 2 );
仅此而已。现在只有ID为的编辑器才不会获得自定义样式。没有不稳定的副作用,我们的代码在所有情况下都与其他代码保持兼容。