Wie ändere ich die Standardposition von WP-Meta-Boxen?

Antworten:

22

Sie können die Standard-Meta-Boxen mit remove_meta_box entfernen und sie an einer anderen Position mit add_meta_box erneut hinzufügen:

add_action('do_meta_boxes', 'wpse33063_move_meta_box');

function wpse33063_move_meta_box(){
    remove_meta_box( 'postimagediv', 'post', 'side' );
    add_meta_box('postimagediv', __('Featured Image'), 'post_thumbnail_meta_box', 'post', 'normal', 'high');
}

Dadurch wird es aus der Seitenspalte entfernt und der Hauptspalte hinzugefügt. Ändern Sie postin diesem Beispiel den Namen Ihres benutzerdefinierten Beitragstyps.

Milo
quelle
Das scheint ideal, danke nochmal Milo, ich werde es versuchen.
Mr. Brown
@Milo: Als ob das add_meta_box()einen $callbackFunktionsnamen braucht , woher weiß ich den Namen der von WordPress verwendeten Funktion? Angenommen, ich möchte dasselbe mit der Seitenleiste meta_box 'Categories' (#categorydiv) tun.
Mayeenul Islam
5
@MayeenulIslam Schauen Sie in die Datei /wp-admin/edit-form-advanced.phpund Sie werden sehen, wo WordPress alle Kern-Meta-Boxen und die Rückrufe und Argumente, die es verwendet, hinzufügt. für Kategorien ist es post_categories_meta_box.
Milo
5

Damit hatte ich auch zu kämpfen. Ich habe nicht wirklich eine saubere Möglichkeit gefunden, das Layout / die Reihenfolge neu zu definieren - zumal es von den Benutzern geändert werden kann, wenn / wenn sie die Felder ziehen.

Ich mag es, Dinge mit WordPress zu tun (das zahlt sich normalerweise aus), mich zu überschneiden, als mit WordPress zusammenzustoßen, und die Art und Weise, wie WordPress es tut, ist wie folgt:

WordPress speichert die gezogenen Positionen pro Benutzer und Bildschirm und es gibt eine ganze Reihe von Benutzer-Meta-Tasten, die es verwendet, je nachdem, auf welcher Seite / auf welchem ​​Bildschirm es sich befindet.

Sie können also für jeden neuen Benutzer eine Aktion oder einen Filter hinzufügen, um den Benutzer so einzustellen, wie Sie es möchten.
1) Ziehe und ordne die Seite an, die du beeinflussen möchtest, und 2) schaue in phpmyadmin in deinem User-Meta nach deiner ID und finde heraus, was wp dort gespeichert hat. 3) Codieren Sie dann die neue Benutzeraktion wie folgt, wenn ein Benutzer diese Einstellung NICHT bereits festgelegt hat (um zu vermeiden, dass eine persönliche Auswahl überschrieben wird). Sie können sie so festlegen, wie Sie es möchten - mit dem Wert, den Sie durch manuelles Festlegen erhalten haben.

In den folgenden Screenshots können Sie sich ein Bild von den von Ihnen gesuchten Benutzer-Meta-Metas machen: http://wpusersplugin.com/related-plugins/amr-user-templates/screenshots-for-user-templates/

(Am Ende habe ich ein allgemeines Plugin geschrieben, damit ich als Administrator mein bevorzugtes Layout für alle Benutzer für alle Arten von Seiten / Bildschirmen definieren kann. Dann könnten sie das ändern, z Dinge wie das Plug-in ruft nur die Benutzerwerte der Vorlage ab, es versucht nicht einmal, den Wert auf einen fest codierten Wert zu setzen.)

anmari
quelle
1
Obwohl mir die Idee hinter diesem Ansatz gefällt, scheint die Lösung von Milo viel schneller zu sein, also werde ich es stattdessen versuchen, aber danke, dass Sie sich die Zeit genommen haben, mich auch über diesen Ansatz zu informieren. Ich werde auf jeden Fall zu einem späteren Zeitpunkt auf diese Weise vorgehen. Ich habe Ihren Kommentar aktualisiert.
Mr. Brown
3
Das von Anmari vorgeschlagene Plugin ist ein kostenpflichtiges kommerzielles Plugin ... und scheint seit August vergangenen Jahres nicht mehr aktualisiert worden zu sein. Wartet ihr das Plugin noch? Wenn nicht, haben Sie darüber nachgedacht, es auf Github zu teilen?
Unfulvio
Vielen Dank an @anmari für das Teilen dieses Ansatzes, sehr hilfreich.
Maor Barazany
0

Wenn Sie genau Ihre Meta-Boxen bestellen möchten, können Sie dieses Plugin verwenden: https://wordpress.org/plugins/post-meta-box-order/

Es wird auf der Meta-Box-Order_post der Benutzeroption (Tabelle wp_usermeta) abgespielt.

Hinweis 1: Diese Technik kann auf jede benutzerdefinierte CPT angewendet werden, indem das Ende des Flags geändert wird: meta-box-order_ [YOUR_CPT]

Hinweis 2: Vergessen Sie nicht, den Hash im Code des Plugins zu ändern, um Ihre neue Bestellung auf alle vorhandenen Benutzer anzuwenden.

rebe100x
quelle