Ich versuche, eine Funktion zu erstellen, mit der ich den Titel einer etablierten Meta-Box ändern kann (dh den Meta-Box-Titel "Autoren" in "Team" usw. ändern kann).
Ich wollte JS nicht verwenden oder musste die ursprüngliche Meta-Box deaktivieren und erneut hinzufügen.
Ich habe mit dem folgenden Thema begonnen, wie in einem anderen Thread, in dem der Code wie folgt aufgeführt ist:
// hook to the 'add_meta_boxes' action
add_action('add_meta_boxes', 'change_meta_box_titles');
function change_meta_box_titles($post_type, $post)) {
global $wp_meta_boxes; // array of defined meta boxes
// cycle through the array, change the titles you want
}
Ich bin fest entschlossen, "durch das Array zu blättern und die gewünschten Titel zu ändern".
Was wäre der beste Weg, um dies zu erreichen? Verwenden Sie eine foreach-Schleife? Oder ein Switch / Case-Szenario? Ich bin ziemlich neu in diesem Bereich. Könnte jemand ein Beispiel dafür geben, wie dies erreicht werden kann?
Update: Stephen Harris 'Beispiel funktioniert für Core Meta (danke!):
add_action('add_meta_boxes', 'change_meta_box_titles');
function change_meta_box_titles() {
global $wp_meta_boxes; // array of defined meta boxes
// cycle through the array, change the titles you want
$wp_meta_boxes['post']['normal']['core']['authordiv']['title']= 'Team Member';
}
Update: Für benutzerdefinierte Metas behoben
Damit dies mit den benutzerdefinierten Metas funktioniert, ändern Sie Ihre add_action wie folgt, sodass Ihr Änderungstitelcode nach dem Hinzufügen des Meta-Felds ausgelöst wird:
add_action('add_meta_boxes', 'change_meta_box_titles', 999);
$wp_meta_boxes['post']['side']['core']['projectinfo']['title']= 'New Title';
aber das hat nicht funktioniert. Habe ich hier etwas verpasst?echo '<pre>'; print_r($wp_meta_boxes); echo '</pre>'; wp_die('');
Sie es, nachdem Sie den Titel geändert haben, um festzustellen, was schief gelaufen ist. Ich vermute, dass es nicht "Kern" ist: DIch weiß, dass dies eine alte Frage ist, aber dafür gibt es einen Filterhaken. Sie würden dem Plugin Ihres Themas
functions.php
oder Ihrer benutzerdefinierten Funktionalität eine Funktion hinzufügen, mit der Sie verbunden sindpost_type_labels_{$post_type}
Nehmen wir zum Beispiel an, wir haben einen benutzerdefinierten Beitragstyp namens
band
und möchten die vorgestellten Bildbezeichnungen in "Bandfoto" ändern. Die Funktion würde ungefähr so aussehen:ref: https://developer.wordpress.org/reference/hooks/post_type_labels_post_type/
quelle
Afaik, Ihre beste Wette wäre es, eine Funktion kurz vor der Erstellung der Meta-Box an den Hook anzuschließen:
quelle
Okay ... Das ist ein bisschen hacky, aber ich fand es irgendwie klug. Grundsätzlich verwenden Sie einfach die integrierten Sprachfunktionen, um zu ändern, was Sie möchten. Solange Sie das ursprüngliche Wort oder die ursprünglichen Wörter kennen, die Sie ändern möchten, und diese im Code mit so etwas wie richtig aufgerufen wurden
__('text in here')
, können Sie sie nach Belieben ändern.Ich habe es einmal verwendet, um das Meta-Feld "Auszüge" in einen anderen Namen zu ändern (zusammen mit der Beschreibung darin), weil mein Thema es für extrem kleine Textteile verwendet hat. Guck mal:
Wie sich herausstellte, war ich nicht der einzige, der daran dachte. Überraschung. Hier ist ein Artikel, der dieselbe Idee mit einer anderen Methode zur Verwendung von gettext beschreibt.
quelle
Seit WordPress 4.4 kann das $ screen arg ein Array sein, das das Hinzufügen oder Ändern von Meta-Boxen in Massen erheblich vereinfacht.
Der folgende Code ändert den Titel des Meta-Felds "Autor" auf Seiten, Posts, Anhängen und allen benutzerdefinierten Post-Typen in "Editor", unabhängig davon, wie viele hinzugefügt wurden oder wann sie Ihrer Site hinzugefügt wurden.
quelle
Dies ist ein bisschen hackig, aber für alle, die eine einfache CSS-Lösung benötigen, verwenden Sie diese:
Ersetzen Sie einfach Ihre Metabox-ID durch Ihre eigene. :) :)
(Hinweis: Normalerweise füge ich eine admin.css über functions.php hinzu. Dort steuere ich einige wp-Admin-Stile.)
quelle