2010-03-30 10 views
6

¿Alguien sabe de una forma de eliminar el editor principal de la pantalla de edición de página? Y no solo con css. He agregado algunos otros cuadros meta con el tinymce y colisionan con el principal.Eliminar el editor principal de la página de edición de wordpress

Tengo una clase que elimina otros cuadros meta de la pantalla de edición, pero no puedo deshacerme del editor principal de esta manera. He intentado añadir 'divpostrich' y 'divpost' a la matriz en la clase (pero sin suerte):

class removeMetas{ 
    public function __construct(){ 
     add_action('do_meta_boxes', array($this, 'removeMetaBoxes'), 10, 3); 
    } 

    public function removeMetaBoxes($type, $context, $post){ 
     /** 
     * usages 
     * remove_meta_box($id, $page, $context) 
     * add_meta_box($id, $title, $callback, $page, $context = 'advanced', $priority = 'default') 
     */ 
     $boxes = array('slugdiv', 'postexcerpt', 'passworddiv', 'categorydiv', 
         'tagsdiv', 'trackbacksdiv', 'commentstatusdiv', 'commentsdiv', 
         'authordiv', 'postcustom'); 

     foreach ($boxes as $box){ 
      foreach (array('link', 'post', 'page') as $page){ 
       foreach (array('normal', 'advanced', 'side') as $context){ 
        remove_meta_box($box, $type, $context); 
       } 
      } 
     } 
    } 
} 

$removeMetas = new removeMetas(); 

También he intentado quitar el 'divpostrich' con jQuery. Pero no puedo imaginar dónde poner el js para que funcione. Cuando elimino el 'postdivrich' en el navegador con Firebug, mis campos de tinymce restantes funcionan perfectamente.

¿Alguna idea?

Respuesta

8

Lo que está buscando es el conjunto $_wp_post_type_features global.

A continuación se muestra un ejemplo rápido de cómo puede ser utilizado

function reset_editor() 
{ 
    global $_wp_post_type_features; 

    $post_type="page"; 
    $feature = "editor"; 
    if (!isset($_wp_post_type_features[$post_type])) 
    { 

    } 
    elseif (isset($_wp_post_type_features[$post_type][$feature])) 
    unset($_wp_post_type_features[$post_type][$feature]); 
} 

add_action("init","reset_editor"); 
+4

por qué la línea 'if (! Isset ($ _ wp_post_type_features [$ post_type])' No está haciendo nada y la siguiente línea está revisando de todos modos y solo se desestabilizará si la matriz asociativa contiene las claves requeridas. – jbx

+1

Estoy de acuerdo, no es necesario, solo necesito esto: if (isset ($ _ wp_post_type_features [$ post_type] [$ feature])) unset ($ _ wp_post_type_features [$ post_type] [$ feature]); – gray

0

¿No podría simplemente desactivar el editor TinyMCE, dejando el editor HTML, ya que sus metacajas están colisionando con él? :)

+0

Nah, que desactivará el TinyMCE en mis otros metacaps también. Y quiero que :) :) – ugreen

24

Se construye en apoyo WP por esto por lo que no tiene que tocar el violín directamente con las variables globales y asegurar la compatibilidad hacia delante si alguna vez cambio cómo se manejan las características El código WP Core tiene más o menos la misma lógica exacta como @ user622018 responder embargo

function remove_editor() { 
    remove_post_type_support('page', 'editor'); 
} 
add_action('admin_init', 'remove_editor'); 
+0

+1 por sucinto – Fluoxetine

+6

Nota : para hacer esto de forma selectiva, para páginas particulares, necesita enlazarse a algo más tarde. El objeto '$ post' global no está disponible en' admin_init'. He usado 'admin_head' para desactivar el editor solo para la página de inicio –

0

Para desactivar el editor tendrá que editar el archivo wp-config.php y añadir esta línea al inicio:

define('DISALLOW_FILE_EDIT', true); 
+0

Esta constante impide que se use el editor de tema/complemento, pero no tiene ningún impacto en la pantalla del editor de página. –

2

Agregue el siguiente código a sus funciones.

function remove_editor_init() { 
if (is_admin()) { 
    $post_id = 0; 
    if(isset($_GET['post'])) $post_id = $_GET['post']; 
    $template_file = get_post_meta($post_id, '_wp_page_template', TRUE); 
    if ($template_file == 'page-home.php') { 
     remove_post_type_support('page', 'editor'); 
    } 
} 
} 
add_action('init', 'remove_editor_init'); 
Cuestiones relacionadas