Benutzerdefinierte Beitragstypen: So entfernen Sie den Editor (-meta box)

9

Ich frage mich, wie ich den Post-Editor (Visual + HTML) loswerden kann . Ich habe versucht, die Unterstützung für Post-Typen nicht zu registrieren, und sie wird weiterhin angezeigt (die Abmeldung funktioniert problemlos mit jedem anderen Standard-Meta-Feld auf dem Post-Bearbeitungsbildschirm). Ich habe auch versucht, es mit remove_meta_box abzumelden, was auch nicht funktioniert hat (funktioniert für alles andere außer der Titel-Meta-Box). Vielleicht fehlt mir etwas. Ich habe bereits im Internet gesucht und konnte nichts finden. Ich hoffe jemand kann es mir sagen. Vielen Dank!

Ps. Ich würde mich über eine Lösung zum Deaktivieren des Titelfelds freuen, aber das ist die 2. (die Registrierung beim Post-Typ funktioniert nicht).

(Wordpress-Version ist 3.0.4.)

Kaiser
quelle

Antworten:

16

Wenn Sie 'Unterstützungen' in der Deklaration des Beitragstyps ein leeres Array geben, sollten Sie den Editor und den Titel sowie alle anderen Standardfelder auf der Seite zum Bearbeiten von Beiträgen entfernen.

$supports = array ('');
    $args = array(
      'label' => 'people',
      'supports' => $supports,
      'hierarchical' => false,
      'public' => true,
      'rewrite' => true
         );

    register_post_type( 'people', $args);

Ergebnis: Alt-Text Füllen Sie "Unterstützungen" mit den Elementen aus, die Sie anzeigen möchten, z. B. Trackbacks, Kommentare usw. Oder lassen Sie sie einfach leer, um die Seite leer zu lassen, mit Ausnahme des Felds, in dem Sie Ihre Beiträge speichern können. Besuchen Sie uns hier, wenn Sie auch hierarchische Taxonomie-Metaboxen entfernen möchten.

Manny Fleurmond
quelle
Vielen Dank bisher. Mein Problem ist, dass ich nicht alles auf leer setzen kann. Ich habe drei Klassen geschrieben, um die Generierung von benutzerdefinierten Beitragstypen, benutzerdefinierten Taxonomien und Tags zu beschleunigen. Sie haben Standardeinstellungen. Bei benutzerdefinierten Beitragstypen ist es einfach alles. Aber ich muss einige Boxen für bestimmte Post-Typen abmelden. Und zum einen muss ich auch die Editorbox abmelden.
Kaiser
Mich interessiert, was meinst du damit, dass alles leer ist? Wenn Sie den Editor entfernen möchten, fügen Sie einfach nicht den Editor in das Array "support" ein, wenn Sie den Beitragstyp in Ihrer Klasse erstellen.
Manny Fleurmond
2
@kaiser wenn es deine eigenen Klassen sind, was ist das Problem?
Lassen
@Rarst: Es ist nur eine Basis, die Folgendes bewirkt: Registrieren von Beitragstypen und Taxonomien aus einem Array und Anbieten eines Filters für $ Labels und $ Args (Standard und spezifisch). Die Terms-Klasse generiert nur nicht löschbare Terms, die von einem Array aktualisiert und zugewiesen werden. Meta-Boxen können ohne die Klasse einfach sein und wären für mich nicht sinnvoll zu integrieren. Die Klassen sind nur dazu da, mir Zeit zu sparen und Kunden davon abzuhalten, Begriffe zu löschen, die das System benötigt. Aber danke fürs schauen. Ihre Hilfe wird (wieder) sehr geschätzt :)
Kaiser
2
@kaiser was ist dann das Problem mit der Einstellung supports, Array über Filter zu leeren?
Rarst
15

Wenn Sie für das supportsArgument nichts übergeben , werden die Standardeinstellungen von 'title', 'editor'verwendet (wobei "nichts" alles ist, was ist empty()).

Genauso wie Sie nach der Registrierung des Beitragstyps Unterstützung für etwas hinzufügen können add_post_type_support( $post_type, $feature ), können Sie die Unterstützung für etwas durch Aufrufen entfernen remove_post_type_support( $post_type, $feature ). Wenn Sie dies nach der Registrierung Ihres Beitragstyps aufrufen, sollte der Editor entfernt werden:

remove_post_type_support( 'my_post_type', 'editor' );

Diese Funktionen manipulieren nur die globale $_wp_post_type_featuresVariable, aber es ist immer besser, dies mit API-Funktionen zu tun, als selbst damit herumzuspielen.

Jan Fabry
quelle
LÖSUNG! Ich dachte immer, das wäre nur, um Ex zu entfernen. Thumbnails oder nav_menu über ein untergeordnetes Thema. Vielen Dank!
Kaiser
1
Autsch, das habe ich verpasst. Ein guter Punkt, das Übergeben eines leeren Arrays wird als leer ausgewertet ... Das Übergeben leerer Werte ist immer so ein Durcheinander, dass es nicht intuitiv ist und daher wie Standard behandelt wird, anstatt wie nichts . :(
Rarst
1
@Rarst: Ich denke, es würde auch funktionieren, wenn Sie einen Dummy-Feature-Namen übergeben würden. Es ist nur ein Array-Schlüssel, es spielt also keine Rolle, ob Dummy-Daten eingefügt werden. Ich habe einmal 0.1anstelle 0eines Parameters verwendet , um die empty()Prüfung zu bestehen.
Jan Fabry
1
@ Jan Fabry yep, es ist einfach nicht das erste Mal, dass ich auf empty()meine getreten bin . Wie oben - sehr kontraintuitiv.
Rarst
Hm. Es funktioniert nicht mit Schlüsseln und daher denke ich, dass "Dummy-Werte" bei einem späteren Upgrade zu einer weiteren "Mine" werden könnten (versuchen Sie, den schlechten Wert zu finden). Wie auch immer: Vielen Dank an euch beide! :) Bearbeiten: wäre praktisch, wenn die Werte nicht nur vorhanden wären, sondern Schlüssel / Wert-Paare sind. Ex. 'support' => array('thumbnail' => true, 'editor' => false);
Kaiser
2

Ich verwende das UI-Plugin für benutzerdefinierte Beitragstypen, um benutzerdefinierte Beitragstypen zu erstellen. Mit diesem Plugin können Sie den Post-Editor unter den erweiterten Optionen deaktivieren.

Beitragstyp verwalten -> Erweiterte Optionen anzeigen

Hier ist ein Link zum Plugin: http://wordpress.org/extend/plugins/custom-post-type-ui/

PS - Damit kannst du auch das Titelfeld deaktivieren :)

Carson
quelle
Wie oben gesagt, habe ich drei Klassen geschrieben und kann daher nicht zu einem Plugin wechseln. Ich meine, ich würde sowieso nicht einmal in Betracht ziehen, ein Plugin zu verwenden. Plugins sind (imo) für die Entwicklung oder einfach austauschbare Dinge wie Kommentarformulare und keine Kernsachen wie Beitragstypen oder Taxonomien. Danke trotzdem!
Kaiser
1
Tatsächlich können Plugins so ziemlich alles an Wordpress anpassen, einschließlich benutzerdefinierter Beitragstypen. Ich erstelle gerade ein Plugin, das zahlreiche Beitragstypen, ihre Metaboxen und ihre verschiedenen benutzerdefinierten Felder erstellt.
Manny Fleurmond
@Manny Fleurmond: Wenn Sie teilen wollen, schreiben Sie mir bitte einen Link. Ich denke immer noch darüber nach, vielleicht - vielleicht auch in meinen Klassen eine Routine für fortgeschrittene Meta-Boxen zu schreiben.
Kaiser
0

Überprüfen Sie register_post_type (); im Kodex. Unter den Argumenten Abschnitt nach unten scrollen , bis Sie sehen Support .

Ab 3.5 kann der Boolesche falseWert anstelle eines Arrays als Wert übergeben werden, um das Standardverhalten (Titel und Editor) zu verhindern .

Oder passen Sie Ihren benutzerdefinierten Beitragstyp an, indem Sie die gewünschten Werte hinzufügen, zum Beispiel:

'supports' => array(
    'title',
    'author',
    'thumbnail',
    'post-formats'
),

Diese unterstützten Optionen in meinem Array werden in meinem WordPress-Backend angezeigt.

Gothburz
quelle
-2

Sie können auch den Stil für die Bearbeitungsseite des Administrators festlegen, um bestimmte Elemente wie den Editor usw. auszublenden.

function custom_colors() {
   echo '<style type="text/css">
            body.post-type-events #postdivrich {
            display: none;
            }
         </style>';
}

add_action('admin_head', 'custom_colors');
Romapad
quelle
Vielen Dank für Ihre Antwort, aber dies würde (a) dazu führen, dass es nicht entfernbar ist, da es nicht in der Abhängigkeits-API registriert ist, und (b) es für Personen zugänglich machen, die wissen, wie man die Entwicklertools des Browsers verwendet.
Kaiser