2012-01-11 19 views
6

Me alegra saber que Sony (wordpress3.3) tiene el nuevo editor api wp_editor() que nos da la capacidad de usar varias instancias del editor en nuestros campos personalizados con facilidad.¿Cómo personalizar el editor predeterminado de WordPress?

Pero necesitaba personalizar el editor predeterminado (para el contenido principal) y no pude encontrar la manera de hacerlo con esta función. Necesitaba personalizar el editor para el nuevo tipo de publicación personalizada llamado baner para el que necesitaba cambiar el tamaño del editor con menos botones. Sé que podría hacerlo simplemente usando un campo personalizado en su lugar, pero por alguna razón quiero usar el contenido para la descripción del banner.

Gracias de antemano.

Respuesta

9

Estaba buscando una solución para colocar Metabox personalizado sobre el editor predeterminado y encontré la solución a mi pregunta anterior (cómo personalizar el editor predeterminado con wp_editor).

La solución fue desarmar primero el editor predeterminado. Luego crea otro metabox para colocar el contenido y luego usa wp_editor para crear una nueva instancia, simple ¿no?

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' 
     ); 
    } 
    } 

De esta manera, hemos registrado un nuevo metabox llamado contenido. Ahora es hora de colocar el 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'); 

    } 

¡Ahora puede personalizar completamente su editor! Asi es como luce ahora. ¡Espero que también sea útil para ti! enter image description here

+1

Debe marcar esto como la respuesta correcta. – brasofilo

0

puede probar esta Editor cual puede añadir campos adicionales también es fácil de usar e instalar

+0

Fue un poco pesado, con tablas adicionales, no me gustó, de todos modos gracias por la sugerencia. –

1

Puede personalizar el editor (TinyMCE) con un filtro, como se muestra here. Fragmento de código adjunta:

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'); 

Este código debe ser colocado en el expediente de su tema functions.php. Es posible que desee print_r($in) para ver todas las claves que se pasan (he omitido algunas de ellas aquí porque no creo que la página a la que he vinculado anteriormente esté actualizada). Puede buscar la última fuente here. Encontrará los filtros que usted está buscando en la función public static function editor_settings($editor_id, $set)

Además, es posible que también querrá asegurarse de que esto sólo sucede para su baner post_type, ya que esto afectará a todas las instancias del editor de que se crean.

+0

Probé esto pero no encontré ninguna opción como cambiar el tamaño del editor (es decir, textarea_rows), hacerlo pequeño, etc. –

+0

Has vinculado a la referencia wp_editor en tu pregunta inicial - puedes modificar estas opciones a través del ' Parámetro $ settings' con las teclas 'textarea_rows' y' teeny' – chrisn

Cuestiones relacionadas