我已经阅读了几篇关于向所见即所得编辑器(TinyMCE)添加自定义样式的教程。但它们似乎都不适用于最新版本的WordPress。我正在使用v3.3.2。codex中的说明是有效的,但只有在有限的方式下...
注意:为了100%清楚,我正在尝试添加“样式”下拉菜单,作者可以使用它将我的自定义样式应用于文本。(请不要将我的问题与如何使用editor-style.css来设置编辑器本身的样式混淆...)
我设法让代码工作,但只能使用my_mce_before_init()
中的注释行。这个版本的问题在于它使用通用的<span>
添加类。我正在尝试使用更强大的代码版本(如下所示),但某些东西不太对。样式下拉框出现了,但是它是空白的。如果我点击它,第一项会显示“样式”,但什么也不做。我怀疑我的数组有问题。希望比我更有知识的人可以帮我纠正。
以下是我主题的functions.php中相关的代码...
这是我添加按钮的方法:
// Add the Style selectbox to the second row of MCE buttons
function my_mce_buttons_2($buttons)
{
array_unshift($buttons, 'styleselect');
return $buttons;
}
add_filter('mce_buttons_2', 'my_mce_buttons_2');
以下是我如何添加样式的(当我取消注释时它可以工作):
//Define the actual styles that will be in the box
function my_mce_before_init($init_array)
{
// add classes using a ; separated values
//$init_array['theme_advanced_styles'] = "Section Head=section-head;Sub Section Head=sub-section-head";
$temp_array['theme_advanced_styles'] = array(
array(
'title' => 'Section Head',
'block' => 'h3',
'classes' => 'section-head'
),
array(
'title' => 'Sub Section Head',
'block' => 'h4',
'classes' => 'sub-section-head'
)
);
$styles_array = json_encode( $temp_array['theme_advanced_styles'] );
// THIS IS THE PROBLEM !!!! READ BELOW
$init_array['theme_advanced_styles'] = $styles_array;
return $init_array;
}
add_filter('tiny_mce_before_init', 'my_mce_before_init');
更新:我找到了解决方法(请见下面我的回答)。在您向下滚动之前,请注意上面的代码中,theme_advanced_styles
是错误的键。当以我这种方式定义自定义样式时,应该使用style_formats
。我怀疑这是一个常见的错误。
'wrapper'=>true
,它仍然无法正常工作。为了安全起见,我回到了(被注释的)版本,该版本将选项定义为字符串,并且它仍然可以工作...(但是在所有内容周围添加了<span>
)。这意味着我在数组中声明类的方式肯定有问题。令人沮丧的是,我找不到任何关于这种替代方案的文档。TinyMCE文档(http://www.tinymce.com/wiki.php/Configuration:theme_advanced_styles)几乎不存在,并且根本没有提到这种替代方案。 - emersonthis