사용자 정의 tinyMCE 단추를 사용하여 wp_editor 인스턴스 작성


19

wp_editor()사용자 정의 tinyMCE 버튼 으로 정의 할 수있는 방법이 있습니까?

내가 눈치 챘을 wp_editor 함수 참조 중 하나 있음을 언급 $settings인수가 될 수 있습니다 tinymce (array) (optional) Load TinyMCE, can be used to pass settings directly to TinyMCE using an array().

내 페이지는 다양한 인스턴스를 사용하며 특정 버튼을 특정 인스턴스에 추가하고 싶습니다.

예를 들어

Instance #1 : Standard buttons
Instance #2 : bold, italic, ul + (custom) pH, temp
Instance #3 : bold, italic, ul + (custom) min_size, max_size

이 튜토리얼에 따라 버튼을 tinyMCE 플러그인으로 이미 등록했다면 어떻게 할 것인지 아는 사람 있습니까?


편집하다

이 작업을 수행하기 위해 플러그인 파일에서 사용하는 코드는 다음과 같습니다.

function add_SF_buttons() {
    if ( ! current_user_can('edit_posts') && ! current_user_can('edit_pages') )
        return;
    if ( get_user_option('rich_editing') == 'true') {
        add_filter('mce_external_plugins', 'add_SF_buttons_plugins');
    }
}

function add_SF_buttons_plugins($plugin_array) {
    $plugin_array['pH'] = $this->plugin_url . '/js/tinymce_buttons/pH.js';
    $plugin_array['pH_min'] = $this->plugin_url . '/js/tinymce_buttons/pH_min.js';
    $plugin_array['pH_max'] = $this->plugin_url . '/js/tinymce_buttons/pH_max.js';
    return $plugin_array;
}

-

if (isset($SpeciesProfile)) {
    add_action( 'init' , array (&$SpeciesProfile, 'register_species' ));
    add_action( 'init' , array( &$SpeciesProfile, 'register_species_taxonomies' ));

    add_action( 'init', array (&$SpeciesProfile, 'add_SF_buttons' ));
}

-

<?php wp_editor( $distribution, 'distribution', array( 'theme_advanced_buttons1' => 'bold, italic, ul, pH, pH_min', "media_buttons" => false, "textarea_rows" => 8, "tabindex" => 4 ) ); ?>

불행히도 이것은 작동하지 않습니다. 위의 편집기는 단순히 페이지의 다른 모든 인스턴스와 동일한 버튼을 표시합니다.


미리 감사드립니다.

답변:


13

설명에 따르면 당신은 그것을 거의 가지고있었습니다.

인스턴스 2와 3을 찾고자하는 내용은 다음과 같습니다 (예를 들어 1은 기본 버튼 세트를 얻기 위해 설정을 비워 둘 수 있습니다).

사례 2 :

wp_editor(
    $distribution,
    'distribution',
    array(
      'media_buttons' => false,
      'textarea_rows' => 8,
      'tabindex' => 4,
      'tinymce' => array(
        'theme_advanced_buttons1' => 'bold, italic, ul, pH, temp',
      ),
    )
);

인스턴스 3 (TinyMCE에 설정할 수있는 4 개의 행 각각 표시) :

wp_editor(
    $distribution,
    'distribution',
    array(
      'media_buttons' => false,
      'textarea_rows' => 8,
      'tabindex' => 4,
      'tinymce' => array(
        'theme_advanced_buttons1' => 'bold, italic, ul, min_size, max_size',
        'theme_advanced_buttons2' => '',
        'theme_advanced_buttons3' => '',
        'theme_advanced_buttons4' => '',
      ),
    )
);

WP가 wp_editor () 함수 내에서 사용하는 설정을 구문 분석하는 방법을 이해 하려면 wp-includes/class-wp-editor.php파일 (특히 editor_settings126 행 의 함수) 을 체크 아웃하는 것이 좋습니다 . 또한 TinyMCE의 기능과 init 옵션 (WP가 완전히 지원하지 않는다고 생각 함)에 대한 자세한 내용을 보려면 이 페이지 를 확인 하십시오 .


안녕 친구. 답변 주셔서 감사합니다. 나는 원래의 게시물에 약간의 코드를 추가했는데, 나는 당신의 대답으로 판단하면 효과가 있다고 생각합니다. 좀 봐 줄래?
덩크

tinymce 관련 매개 변수를 자체 배열로 래핑하는 것을 잊었습니다. 답변을 편집하고 질문에 넣은 다른 매개 변수를 추가했습니다. 어떻게되는지 알려주세요?
Tomas Buteler

1
또한 다른 사람들 (나!)은 이것을 스스로하는 방법을 알고 싶다는 점을 명심해야합니다. 관련 WP / TinyMCE 문서에 대한 링크를 추가 할 수 있습니까?
Tom J Nowell

좋아, 이것은 작동하는 것으로 보인다. 불행히도 내 버튼은 아니지만 별도의 질문입니다 :) tbuteler 감사합니다.
덩크

천만에요! @TomJNowell, 나는 제안에 감사의 말을 전하는 마지막 단락을 추가했습니다!
Tomas Buteler

9

wp_editor () 함수에서 배열을 통해 매개 변수를 설정할 수 있습니다. 탁월한

$settings = array(
    'tinymce'       => array(
        'setup' => 'function (ed) {
            tinymce.documentBaseURL = "' . get_admin_url() . '";
        }',
    ),
    'quicktags'     => TRUE,
    'editor_class'  => 'frontend-article-editor',
    'textarea_rows' => 25,
    'media_buttons' => TRUE,
);
wp_editor( $content, 'article_content', $settings ); 

매개 변수 'tinymce', 'tinymce'=> true, // TinyMCE로드에서 배열을 통해 값을 설정할 수 있으며 array ()를 사용하여 TinyMCE에 직접 설정을 전달하는 데 사용할 수 있습니다. 버튼 : theme_advanced_buttons1, theme_advanced_buttons2, theme_advanced_buttons3,theme_advanced_buttons4

array( 'theme_advanced_buttons1' => 'bold, italic, ul, pH, temp' )

또한 필터 후크를 통해 사용자 정의 버튼을 만들 수 있습니다.

function fb_change_mce_options($initArray) {
    // Comma separated string od extendes tags
    // Command separated string of extended elements
    $ext = 'pre[id|name|class|style],iframe[align|longdesc|name|width|height|frameborder|scrolling|marginheight|marginwidth|src]';
    if ( isset( $initArray['extended_valid_elements'] ) ) {
        $initArray['extended_valid_elements'] .= ',' . $ext;
    } else {
        $initArray['extended_valid_elements'] = $ext;
    }
    // maybe; set tiny paramter verify_html
    //$initArray['verify_html'] = false;
    return $initArray;
}
add_filter( 'tiny_mce_before_init', 'fb_change_mce_options' );

또한 버튼을 직접 필터링 할 수 있습니다. 각 라인은 각 필터가 : mce_buttons, mce_buttons_2, mce_buttons_3,mce_buttons_4

다음 매개 변수는 후크의 예제에 대한 기본값입니다. tiny_mce_before_init

'mode' => 'specific_textareas'
'editor_selector' => 'theEditor'
'width' => '100%'
'theme' => 'advanced'
'skin' => 'wp_theme'
'theme_advanced_buttons1' => 'bold,italic,strikethrough,|,bullist,numlist,blockquote,|,justifyleft,justifycenter,justifyright,|,link,unlink,wp_more,|,spellchecker,fullscreen,wp_adv'
'theme_advanced_buttons2' => 'formatselect,underline,justifyfull,forecolor,|,pastetext,pasteword,removeformat,|,media,charmap,|,outdent,indent,|,undo,redo,wp_help'
'theme_advanced_buttons3' => ''
'theme_advanced_buttons4' => ''
'language' => 'de'
'spellchecker_languages' => 'English=en,Danish=da,Dutch=nl,Finnish=fi,French=fr,+German=de,Italian=it,Polish=pl,Portuguese=pt,Spanish=es,Swedish=sv'
'theme_advanced_toolbar_location' => 'top'
'theme_advanced_toolbar_align' => 'left'
'theme_advanced_statusbar_location' => 'bottom'
'theme_advanced_resizing' => true
'theme_advanced_resize_horizontal' => false
'dialog_type' => 'modal'
'relative_urls' => false
'remove_script_host' => false
'convert_urls' => false
'apply_source_formatting' => false
'remove_linebreaks' => true
'gecko_spellcheck' => true
'entities' => '38,amp,60,lt,62,gt'
'accessibility_focus' => true
'tabfocus_elements' => 'major-publishing-actions'
'media_strict' => false
'paste_remove_styles' => true
'paste_remove_spans' => true
'paste_strip_class_attributes' => 'all'
'wpeditimage_disable_captions' => false
'plugins' => 'safari,inlinepopups,spellchecker,paste,wordpress,media,fullscreen,wpeditimage,wpgallery,tabfocus'

이 필터에 대한 자세한 정보 는 이 링크 를 참조하십시오 .


7

wp 소스 파일을 파야 했으므로 이것을 업데이트하십시오.

$settings = array(
    'tinymce' => array(
        'toolbar1' => 'bold, italic',
        'toolbar2' => '',
    ),
    'wpautop' => false,
    'media_buttons' => false,
);

Tinymce 4에서 변경된 것으로 생각합니다.


1
$args = array(
    'tinymce'       => array(
        'toolbar1'      => 'bold,italic,underline,separator,alignleft,aligncenter,alignright,separator,link,unlink,undo,redo',
        'toolbar2'      => '',
        'toolbar3'      => '',
    ),
);
wp_editor( $content, $editor_id, $args );
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.