我有一个问题,我正试图更好地理解,以便在下面的脚本检查中强制mce为true。
背景:我正在将富格文本编辑器应用于类别描述文本区域,以允许用户将富格文本格式应用于类别描述。
我遇到的问题是,当用户碰巧将帖子或页面编辑器留在“HTML”选项卡上时。在这种情况下,WordPress显然正在设置一个全局标志,该标志导致下面脚本中的mce变量初始化为false。
这会在“类别描述”字段上禁用我的富文本编辑器。
我怎样才能克服这个问题?
<script type="text/javascript">
(function(){
var init, ed, qt, first_init, mce = false;
//mce needs to be true!!!
if ( typeof(tinymce) == \'object\' ) {
// mark wp_theme/ui.css as loaded
tinymce.DOM.files[tinymce.baseURI.getURI() + \'/themes/advanced/skins/wp_theme/ui.css\'] = true;
for ( ed in tinyMCEPreInit.mceInit ) {
if ( first_init ) {
init = tinyMCEPreInit.mceInit[ed] = tinymce.extend( {}, first_init, tinyMCEPreInit.mceInit[ed] );
} else {
init = first_init = tinyMCEPreInit.mceInit[ed];
}
if ( mce )
try { tinymce.init(init); } catch(e){}
}
}
if ( typeof(QTags) == \'function\' ) {
for ( qt in tinyMCEPreInit.qtInit ) {
try { quicktags( tinyMCEPreInit.qtInit[qt] ); } catch(e){}
}
}
})();
最合适的回答,由SO网友:Tomas Buteler 整理而成
该“全局标志”称为cookie :)
几周前,我也遇到了同样的问题,一直在寻找AJAX调用、站点选项和用户偏好,直到我找到答案。
如果您检查WP的源代码以生成遇到问题的JS函数的第一行,您将看到“true”或“false”是wp_default_editor
函数,可用于筛选。将此添加到functions.php
将导致WP忽略有人上次在编辑帖子时使用HTML选项卡这一事实,并将使TinyMCE每次都成为默认编辑器(假设页面是在能够利用富文本编辑的设备中呈现的,WP会进行检查):
add_filter(\'wp_default_editor\', \'always_start_with_tinymce\');
function always_start_with_tinymce($editor_type) {
if(user_can_richedit()) {
return \'tinymce\';
}
return $editor_type;
}
它对我来说效果很好,因为我不得不在一个没有HTML编辑选项的textarea中强制进行富文本编辑,但它是一个与其他TinyMCE实例完全不同的页面。。。也许您的案例需要在上面的函数中进行更多检查,但希望它能引导您走上正确的道路。