可以在文本面板的格式选项中添加自定义格式吗?


16

在文本编辑器中,您可以在其中设置标题和其他设置,是否可以添加自己的样式供客户端使用?甚至删除不必要的?


2
WP3和TinyMCE在这方面太混乱了。我不敢相信不可能像CKEditor中那样轻松地添加或自定义该死的格式。
cherouvim 2010年

1
我同意,这很痛苦。
轻度绒毛,2010年

Answers:


17

“经典” TinyMCE编辑器具有两个下拉菜单:formatselect用于段落样式styleselect用于字符样式 -也可以包含段落样式,以使其更加混乱。默认情况下,WordPress中的配置仅显示格式下拉列表。如果您将自定义样式表应用于编辑器,TinyMCE可以使用它来选择类名并将它们添加到样式下拉列表中-但这并非每次都有效。

由于3.0你可以叫add_editor_style()functions.php的样式表添加到编辑器。默认情况下,它editor-style.css位于主题目录中。在3.0之前的版本中,您必须加入mce_css过滤器才能将URL添加到编辑器样式表中。这将在最终content_cssTinyMCE的配置价值

要添加样式下拉菜单,该styleselect选项必须出现在按钮栏配置数组之一中(theme_advanced_buttons[1-4]在TinyMCE中,mce_buttons_[1-4]在WordPress中过滤为)。的块格式的列表是通过控制所述theme_advanced_blockformatsTinyMCE的的选项,其可以添加到在所述控制阵列tiny_mce_before_init的过滤器。如果您想自定义的名称样式下拉(不只是你的CSS类名),看看theme_advanced_styles选项。您还可以使用更高级的style_formats选项,它使您可以更灵活地定义样式。

带有所有钩子和默认配置的相关PHP代码wp-admin/includes/post.php在函数中wp_tiny_mce()。总之,您的设置可能如下所示:

add_action( 'after_setup_theme', 'wpse3882_after_setup_theme' );
function wpse3882_after_setup_theme()
{
    add_editor_style();
}

add_filter('mce_buttons_2', 'wpse3882_mce_buttons_2');
function wpse3882_mce_buttons_2($buttons)
{
    array_unshift($buttons, 'styleselect');
    return $buttons;
}

add_filter('tiny_mce_before_init', 'wpse3882_tiny_mce_before_init');
function wpse3882_tiny_mce_before_init($settings)
{
    $settings['theme_advanced_blockformats'] = 'p,h1,h2,h3,h4';

    // From http://tinymce.moxiecode.com/examples/example_24.php
    $style_formats = array(
        array('title' => 'Bold text', 'inline' => 'b'),
        array('title' => 'Red text', 'inline' => 'span', 'styles' => array('color' => '#ff0000')),
        array('title' => 'Red header', 'block' => 'h1', 'styles' => array('color' => '#ff0000')),
        array('title' => 'Example 1', 'inline' => 'span', 'classes' => 'example1'),
        array('title' => 'Example 2', 'inline' => 'span', 'classes' => 'example2'),
        array('title' => 'Table styles'),
        array('title' => 'Table row 1', 'selector' => 'tr', 'classes' => 'tablerow1'),
    );
    // Before 3.1 you needed a special trick to send this array to the configuration.
    // See this post history for previous versions.
    $settings['style_formats'] = json_encode( $style_formats );

    return $settings;
}

.css应该使用add_editor_style采用哪种特殊格式?似乎什么都没发生
轻微的Fuzz 2010年

1
@Mild Fuzz:我先前的回答是误导性的,因为WordPress仅显示两个所需下拉菜单之一。我用添加第二个下拉菜单以及如何控制它的方法更新了答案。
Jan Fabry

1
@Mild Fuzz:style_formats在相关的formatsWiki页面中说明了不同项目的参数。
Jan Fabry

1
不再产生错误,但是没有效果!
轻度绒毛,2010年

1
json_encode生成“而不是',因此javascript会中断。您需要做str_replace('“',”'“,json_encode($ style_formats))
cherouvim 2010年

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.