Wenn ich einen neuen Beitrag erstelle, nachdem der Beitragseditor direkt nach dem Klicken auf "Neu hinzufügen" angezeigt wird, anstatt das Dropdown-Menü zu verwenden und ein benutzerdefiniertes Feld auszuwählen, möchte ich bereits einige standardmäßige benutzerdefinierte Feldeingaben haben offenes Ende.
Optisch statt:
Ich hätte gerne so etwas wie:
Ich weiß, dass es dafür Plugins gibt (CPT, Weitere Felder usw.), aber ich möchte eine einfache Möglichkeit, dies mit einer Grundfunktion zu tun.
Ich habe so etwas versucht (ich verwende einen benutzerdefinierten Beitragstyp 'Produkt'):
function register_custom_fields( $post_ID ) {
global $wpdb;
if( !wp_is_post_revision( $post_ID ) ) {
add_post_meta( $post_ID, 'reference', '', true);
add_post_meta( $post_ID, 'price', '', true);
}
}
add_action('edit_product', 'register_custom_fields');
Aber das scheint nicht zu funktionieren. Ich denke, dass der Hook wahrscheinlich falsch ist (weil er edit_post
nach einem Update kommt), aber ich sehe keinen Hook für "neuer Beitrag" (direkt nachdem der Benutzer in wp admin auf "neuer Beitrag" geklickt hat). Gibt es irgendwelche ?
Oder ist die ganze Idee falsch und es gibt einen anderen Weg?
quelle
Dies ist die richtige Methode, um Unterstützung für benutzerdefinierte Felder hinzuzufügen (Sie erhalten keine leeren Felder, wenn Sie Beiträge bearbeiten).
quelle
Sie sollten die Aktion save_post verwenden und Ihre Operation isolieren, indem Sie den Beitragstyp überprüfen, da dieser für alle Beitragstypen ausgeführt wird. Es gibt offensichtlich etwas mehr Logik, die Sie einbauen müssen, damit es für Sie funktioniert. Sie sollten wahrscheinlich ein Post-Meta-Feld festlegen, das überprüft, ob Sie die Standardeinstellungen einmal festgelegt haben, damit Ihre Benutzer nicht frustriert sind, wenn sie ein Post-Meta-Feld leer lassen möchten.
Wenn Sie möchten, dass die Standardeinstellungen null sind (wie in Ihrem Codebeispiel gezeigt), erstellen Sie keine Funktion, da dies nur zusätzlichen Aufwand verursacht und Post-Meta-Felder standardmäßig nicht mit Werten gefüllt werden.
quelle
Ich möchte eine eindeutige Meta-Beschreibung für jeden benutzerdefinierten Beitrag auf einer WP-Site haben, die ich entwickle. Also suchte ich auch nach einem benutzerdefinierten Standardfeld und landete hier.
Ich weiß, dass dies ein ziemlich alter Beitrag ist, aber ich dachte, ich würde die einfache Antwort veröffentlichen, die ich bei mariokostelac.com gefunden habe .
kg ist mein Namespace, Sie können die Funktion nach Ihren Wünschen benennen. Ich bin ziemlich neu in Hooks und WP-Customizing im Allgemeinen, aber ich glaube, wp_insert_post ist der Hook, den Sie suchen.
quelle
get_post_type()
. Wenn Sie einen losen Vergleich durchführen, sollten Sie auch die Bedingungssyntax im YODA-Stil verwenden.get_post_type($post_id)
besser als$_GET['post_type']
?'page' === $_GET['post_type']
. Andernfalls=
könnten Sie in einer Situation enden, in der Sie einen Wert zuweisen , anstatt zwei Werte zu vergleichen , wenn Sie einen einzelnen vergessen . Und das wird als Müll in Ihrer Datenbank enden. Vielleicht möchten Sie auch einen===
typsicheren Vergleich verwenden (ist der Wertpage
? Und ist der Wert des Typsstring
?)'page' === get_post_type($post_id)
?Wenn jemand ein benutzerdefiniertes Feld nach Post-Typ verwenden muss, lasse ich den Code unten so wie ich es getan habe und arbeite gut für mich :)
} add_action ('wp_insert_post', 'awh_field_type');
quelle