2010-03-30 9 views
6

Wer weiß von einer Möglichkeit, den Hauptredakteur von der Seite bearbeiten Bildschirm zu entfernen? Und nicht nur mit CSS. Ich habe ein paar andere Metaboxen mit dem Tinymce hinzugefügt und sie kollidieren mit dem Hauptteil.Entfernen Sie den Hauptredakteur von der Wordpress Edit Seite Bildschirm

Ich habe eine Klasse, die andere Meta-Boxen aus dem Bearbeitungsbildschirm entfernt, aber ich kann nicht den Haupt-Editor auf diese Weise loswerden. Ich habe versucht, ‚divpostrich‘ und ‚divpost‘ auf das Array in der Klasse hinzuzufügen (aber ohne Glück):

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

Ich habe auch den ‚divpostrich‘ mit jquery versucht zu entfernen. Aber kann nicht herausfinden, wo man die js für es arbeiten lässt. Wenn ich das "Postdivrich" im Browser mit Firebug entferne - funktionieren meine verbleibenden Tinymce-Felder perfekt.

Irgendwelche Ideen?

Antwort

8

Was Sie suchen, ist die globale $_wp_post_type_features Array.

Unten ist ein kurzes Beispiel dafür, wie es

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

Warum die 'if (! Isset ($ _ wp_post_type_features [$ post_type]) 'Zeile? Es tut nichts und die nächste Zeile überprüft sowieso und wird nur deaktiviert, wenn das assoziative Array die erforderlichen Schlüssel enthält. – jbx

+1

Ich stimme zu, es ist nicht notwendig, brauche nur das: if (iset ($ _ wp_post_type_features [$ post_type] [$ feature]))) nicht gesetzt ($ _ wp_post_type_features [$ post_type] [$ feature]); – gray

0

Konnten Sie nicht einfach den TinyMCE-Editor deaktivieren und den HTML-Editor verlassen, da Ihre Metaboxen damit kollidieren? :)

+0

Nein, das wird die TinyMCE auch auf meinen anderen Meta-Boxen deaktivieren. Und ich will diese :) – ugreen

24

Es wird gebaut in WP Träger verwendet werden Sie dafür also nicht direkt mit den Globals fummeln müssen und sicherzustellen, vorwärts Kompatibilität, wenn sie jemals ändern wie Funktionen behandelt werden. Der WP Core-Code ist so ziemlich genau die gleiche Logik wie @ user622018 jedoch antworten

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

+1 für die Prägnanz – Fluoxetine

+6

Hinweis : Um dies selektiv für bestimmte Seiten zu tun, müssen Sie später etwas haken.Das globale '$ post' -Objekt ist unter' admin_init' nicht verfügbar.Ich habe 'admin_head' verwendet, um den Editor nur für die Startseite zu deaktivieren –

0

den Editor deaktivieren müssen Sie Ihre wp-config.php Datei und fügen Sie diese Zeile nach oben bearbeiten:

define('DISALLOW_FILE_EDIT', true); 
+0

Diese Konstante verhindert, dass der Theme/Plugin-Editor verwendet wird, hat jedoch keine Auswirkungen auf den Seiteneditor. –

2

Fügen Sie Ihren Funktionen den folgenden Code hinzu.

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