2012-01-11 4 views
6

Buono a sapersi che Sony (wordpress3.3) ha il nuovo editor api wp_editor() che ci dà la possibilità di utilizzare più istanze dell'editor nei nostri campi personalizzati con facilità.Come personalizzare l'editor di wordpress predefinito?

Ma avevo bisogno di personalizzare l'editor di default (per il contenuto principale) e non riuscivo a capire come farlo con questa funzione. Avevo bisogno di personalizzare l'editor per il mio nuovo tipo di post personalizzato chiamato baner per il quale avevo bisogno di cambiare la dimensione dell'editor con un minor numero di pulsanti. So che potrei farlo semplicemente usando un campo personalizzato, ma per qualche ragione voglio usare il contenuto per la descrizione del banner.

Grazie in anticipo.

risposta

9

Stavo cercando una soluzione per posizionare il metabox personalizzato sopra l'editor predefinito e ho trovato la soluzione alla mia vecchia domanda (come personalizzare l'editor predefinito con wp_editor)!

La soluzione era di rimuovere prima l'editor predefinito. Quindi crea un altro metabox per posizionare il contenuto, quindi usa wp_editor per creare una nuova nuova istanza, semplice vero?

add_action('add_meta_boxes', 'page_meta_boxes'); 
public function page_meta_boxes() 
{ 

    global $_wp_post_type_features; 
      //ive defined my other metaboxes first with higher priority 
    add_meta_box(
     $id  = 'page_heading_meta_box', 
     $title = __('Heading'), 
     $callback = array(&$this,'render_page_heading_metabox'), 
     $post_type = 'page', 
     $context = 'normal', 
     $priority = 'core' 
     ); 
    add_meta_box(
     $id  = 'page_description_meta_box', 
     $title = __('Description'), 
     $callback = array(&$this,'render_page_description_metabox'), 
     $post_type = 'page', 
     $context = 'normal', 
     $priority = 'core' 
     ); 
    //check for the required post type page or post or <custom post type(here article) 
    if (isset($_wp_post_type_features['article']['editor']) && $_wp_post_type_features['post']['editor']) { 
     unset($_wp_post_type_features['article']['editor']); 
     add_meta_box(
      'wsp_content', 
      __('Content'), 
      array(&$this,'content_editor_meta_box'), 
      'article', 'normal', 'core' 
     ); 
    } 
    if (isset($_wp_post_type_features['page']['editor']) && $_wp_post_type_features['page']['editor']) { 
     unset($_wp_post_type_features['page']['editor']); 
     add_meta_box(
      'wsp_content', 
      __('Content'), 
      array(&$this,'content_editor_meta_box'), 
      'page', 'normal', 'low' 
     ); 
    } 
    } 

In questo modo abbiamo registrato un nuovo metabox chiamato contenuto. Ora il tempo per posizionare l'editor

 function content_editor_meta_box($post) 
    { 
     $settings = array(
      #media_buttons 
      #(boolean) (optional) Whether to display media insert/upload buttons 
      #Default: true 
      'media_buttons' => true, 

      #textarea_name 
      #(string) (optional) The name assigned to the generated textarea and passed parameter when the form is submitted. (may include [] to pass data as array) 
      #Default: $editor_id 
      'textarea_name'=>'content', 

      #textarea_rows 
      #(integer) (optional) The number of rows to display for the textarea 
      #Default: get_option('default_post_edit_rows', 10) 

      #tabindex 
      #(integer) (optional) The tabindex value used for the form field 
      #Default: None 
      'tabindex' => '4' 

      #editor_css 
      #(string) (optional) Additional CSS styling applied for both visual and HTML editors buttons, needs to #include <style> tags, can use "scoped" 
      #Default: None 

      #editor_class 
      #(string) (optional) Any extra CSS Classes to append to the Editor textarea 
      #Default: 

      #teeny 
      #(boolean) (optional) Whether to output the minimal editor configuration used in PressThis 
      #Default: false 

      #dfw 
      #(boolean) (optional) Whether to replace the default fullscreen editor with DFW (needs specific DOM elements #and css) 
      #Default: false 

      #tinymce 
      #(array) (optional) Load TinyMCE, can be used to pass settings directly to TinyMCE using an array() 
      #Default: true 

      #quicktags 
      #(array) (optional) Load Quicktags, can be used to pass settings directly to Quicktags using an array() 
      #Default: true 
     ); 
     wp_editor($post->post_content,'content'); 

    } 

Ora è possibile personalizzare completamente il vostro editor! Ecco come appare adesso. Spero che sia utile anche per te! enter image description here

+1

Dovresti segnare come risposta corretta .. – brasofilo

0

Si può provare questo Editor cui è possibile aggiungere ulteriori campi Inoltre è semplice da usare e installare

+0

Era un po 'pesante, con tavoli extra, non mi è piaciuto, comunque grazie per il suggerimento. –

1

È possibile personalizzare l'editor (TinyMCE) con un filtro, come mostrato here. Frammento di codice allegato:

function myformatTinyMCE($in) 
{ 
$in['plugins']='inlinepopups,tabfocus,paste,media,fullscreen,wordpress,wpeditimage,wpgallery,wplink,wpdialogs,wpfullscreen'; 
$in['wpautop']=true; 
$in['apply_source_formatting']=false; 
$in['theme_advanced_buttons1']='formatselect,forecolor,|,bold,italic,underline,|,bullist,numlist,blockquote,|,justifyleft,justifycenter,justifyright,justifyfull,|,link,unlink,|,wp_fullscreen,wp_adv'; 
$in['theme_advanced_buttons2']='pastetext,pasteword,removeformat,|,charmap,|,outdent,indent,|,undo,redo'; 
$in['theme_advanced_buttons3']=''; 
$in['theme_advanced_buttons4']=''; 
return $in; 
} 
add_filter('tiny_mce_before_init', 'myformatTinyMCE'); 

Questo codice deve essere inserito nel file del tema functions.php. Puoi vedere print_r($in) per vedere tutte le chiavi che sono state passate (ne ho omesse alcune qui perché non credo che la pagina che ho collegato sopra sia aggiornata). È possibile sfogliare l'ultima fonte here. Troverai i filtri che stai cercando in funzione public static function editor_settings($editor_id, $set)

Inoltre, potresti anche assicurarti che ciò avvenga solo per il tuo baner post_type, poiché questo avrà effetto su tutte le istanze dell'editor che sono state create.

+0

L'ho provato, ma non ho trovato alcuna opzione come cambiare la dimensione dell'editor (es. Textarea_rows), rendendola piccola ecc. –

+0

Ti sei collegato al riferimento wp_editor nella tua domanda iniziale - puoi modificare queste opzioni tramite ' $ settings' parametro con i tasti 'textarea_rows' e' teeny' – chrisn