テキストパネルのフォーマットオプションにカスタムフォーマットを追加できますか?


16

見出しやその他の設定を設定できるテキストエディターで、クライアントが使用する独自のスタイルを追加できますか?不要なものも削除しますか?


2
WP3とTinyMCEは、この面ではめちゃくちゃです。CKEditorのようにいまいましいフォーマットを簡単に追加またはカスタマイズすることは不可能だとは信じられません。
cherouvim

1
私は同意します、それは完全な痛みです。
マイルドファズ

回答:


17

:「古典的な」TinyMCEのエディタは2つのドロップダウン持つ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 でフィルター処理されます)。ブロック形式のリストは、フィルタの制御配列に追加できるTinyMCE theme_advanced_blockformatsオプションによって制御されtiny_mce_before_initます。スタイルのドロップダウンの名前(CSSクラス名だけでなく)をカスタマイズする場合はtheme_advanced_stylesオプションを見てください。より高度なstyle_formatsオプションを使用して、スタイルをより柔軟に定義することもできます。

すべてのフックとデフォルト設定を含む関連するPHPコードはwp-admin/includes/post.php、in、functionにあります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;
}

add_editor_styleを使用して.cssが取るべき特別な形式はありますか?何も起こらないようです
マイルドファズ

1
@Mild Fuzz:WordPressは必要な2つのドロップダウンのうち1つだけを表示するため、以前の回答は誤解を招きました。2番目のドロップダウンを追加し、それを制御する方法で回答を更新しました。
ヤンファブリ

1
@Mild Fuzz:さまざまなstyle_formatsアイテムのパラメーターについては、関連するformatsWikiページで説明されています。
1月ファブリ

1
エラーは発生しなくなりましたが、効果はありません!
マイルドファズ

1
json_encodeが生成する" '( ' "'"、json_encode($ style_formats)としない)。JavaScriptの休憩だから、str_replace実行する必要があり'"
cherouvim

0

こちらのとおり、TinyMCE形式のドロップダウンにはスタイルプレビューが表示されなくなりました

Karaは正しかったので、新しいスタイルを表示するにはデフォルトのスタイルを設定解除する必要があります...

unset($init['preview_styles']);

return $settings;

さらに詳細を追加してください$settings。たとえば、何がここにあるのか明確ではありません。ありがとう
ビルジール
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.