Das automatische Erstellen individueller Felder bei der Veröffentlichung von WordPress-Beiträgen kann ein leistungsfähiges Werkzeug im Werkzeugkasten eines jeden Entwicklers sein.
Wir finden, dass dieser einfache Trick Ihnen helfen kann, Zeit zu sparen und die Arbeitsabläufe zu straffen, wenn Sie Ihrer WordPress-Website neue Funktionen hinzufügen.
In diesem Artikel zeigen wir Ihnen, wie Sie benutzerdefinierte Felder automatisch bei der Veröffentlichung eines Beitrags in WordPress hinzufügen können.
Warum benutzerdefinierte Felder automatisch hinzufügen?
Mitbenutzerdefinierten Feldern können Sie zusätzliche Informationen zu Ihren Beiträgen hinzufügen. Diese Informationen können auf Ihrer Website angezeigt werden, privat bleiben oder von Themes und Plugins verwendet werden, um die Funktionalität Ihrer WordPress-Website zu erweitern.
Es gibt viele Möglichkeiten, benutzerdefinierte Felder zu verwenden. Eine Liste mit hilfreichen Ideen finden Sie in unserem Leitfaden zu benutzerdefinierten Feldern – Tipps, Tricks und Hacks.
Manchmal möchten Sie, dass ein benutzerdefiniertes Feld automatisch erstellt wird, wenn Sie einen Beitrag veröffentlichen. Dies gilt vor allem dann, wenn Sie WordPress Funktionen hinzufügen, damit Sie es nicht nur als einfachen Blog verwenden können.
Wir haben diese Methode bei der Erstellung einer Galerie-Website verwendet. Wir wollten Kurz-URLs für jedes in der Galerie eingestellte Objekt speichern. Also haben wir automatisch ein benutzerdefiniertes Feld erstellt, um die Kurz-URL zu speichern, wenn jeder Beitrag veröffentlicht wurde.
Dieser Trick kann für Entwickler, die WordPress auf die nächste Stufe heben wollen, sehr nützlich sein.
Automatisches Hinzufügen von benutzerdefinierten Feldern bei der Veröffentlichung eines Beitrags
Bei dieser Methode wird ein benutzerdefinierter Codeschnipsel in die Datei functions.php Ihres Themes eingefügt. Wir empfehlen unerfahrenen Benutzern nicht, die Dateien Ihres Themes zu bearbeiten, da schon ein kleiner Fehler Ihre Website zerstören könnte.
Stattdessen zeigen wir Ihnen in diesem Lernprogramm, wie Sie das WPCode-Plugin verwenden.
Mit WPCode können Sie ganz einfach Code-Snippets in WordPress hinzufügen, ohne die functions.php-Datei Ihres Themes bearbeiten zu müssen. Außerdem können Sie alle Ihre Code-Snippets von einem zentralen Bildschirm aus verwalten.
Wenn Sie zum ersten Mal Code in WordPress einfügen, sollten Sie sich unsere Anleitung zum Kopieren und Einfügen von Codeschnipseln in WordPress ansehen, um weitere Einzelheiten zu erfahren.
Um loszulegen, müssen Sie das kostenlose WPCode-Plugin installieren und aktivieren. Wenn Sie Hilfe benötigen, lesen Sie unsere Anleitung zur Installation eines WordPress-Plugins.
Hinweis: Die kostenlose Version von WPCode enthält alles, was Sie zum Hinzufügen von benutzerdefiniertem Code in WordPress benötigen. Für erweiterte Funktionen wie geplante Snippets, Konvertierungspixel und mehr können Sie auf WPCode Pro upgraden.
Sobald das Plugin aktiviert ist, wird ein neuer Menüpunkt mit der Bezeichnung „Code Snippets“ zu Ihrer WordPress-Verwaltungsleiste hinzugefügt. Klicken Sie darauf und dann auf die Schaltfläche „Neu hinzufügen“ auf dem nächsten Bildschirm.
Navigieren Sie von hier aus zur Option „Benutzerdefinierten Code hinzufügen (neues Snippet)“ und klicken Sie auf die Schaltfläche „Snippet verwenden“ darunter.
Danach müssen Sie dem Snippet einen Titel geben und den folgenden Code kopieren und in das Feld „Codevorschau“ einfügen.
add_action('publish_page', 'add_custom_field_automatically');
add_action('publish_post', 'add_custom_field_automatically');
function add_custom_field_automatically($post_ID) {
global $wpdb;
if(!wp_is_post_revision($post_ID)) {
add_post_meta($post_ID, 'field-name', 'custom value', true);
}
}
Sie müssen „Feldname“ und „Benutzerdefinierter Wert“ durch den tatsächlichen Namen und Wert ersetzen, den Sie für das benutzerdefinierte Feld verwenden möchten.
Vergessen Sie nicht, „PHP Snippet“ als Code-Typ aus dem Dropdown-Menü auf der rechten Seite auszuwählen.
Blättern Sie dann nach unten zum Abschnitt „Einfügen“. Hier müssen Sie die Methode „Automatisch einfügen“ ausgewählt lassen.
Mit der Methode Auto Insert wird das Snippet automatisch an der richtigen Stelle eingefügt und ausgeführt.
Sobald Sie fertig sind, müssen Sie den Schalter von „Inaktiv“ auf „Aktiv“ umstellen und dann auf die Schaltfläche „Snippet speichern“ klicken.
Sobald das Snippet aktiviert ist, wird das benutzerdefinierte Feld erstellt, sobald Sie einen Beitrag veröffentlichen.
Wir hoffen, dass dieses Tutorial Ihnen geholfen hat zu lernen, wie man individuelle Felder automatisch bei der Veröffentlichung von Beiträgen in WordPress hinzufügt. Vielleicht möchten Sie auch erfahren , wie Sie individuelle Felder außerhalb der Schleife in WordPress anzeigen können, oder unsere Liste der unverzichtbaren WordPress Plugins zur Erweiterung Ihrer Website lesen.
Wenn Ihnen dieser Artikel gefallen hat, dann abonnieren Sie bitte unseren YouTube-Kanal für WordPress-Videotutorials. Sie können uns auch auf Twitter und Facebook finden.
Sateesh Raghuwanshi
I need to add this action for custom post type named ‚ad_system‘
nayan
I want to add category Id for the post in the post_meta table. How can be the function function add_custom_field_automatically($post_ID) be twicked to accomodate that?
Thanks
chris
Instead of adding the custom field at the time of creating the post, how do I display a custom field by default on the admin page?
puanthanh
it’s not adding to custom post type
Editorial Staff
If you notice, the code above doesn’t have anything related to the custom post types. It only adds to Post and Page „content type“. So you would have to specify the hook for your custom post type.
Admin
puanthanh
Thanks for the reply. Can you help me out on this code.
add_action(‚publish_page‘, ‚add_custom_field_automatically‘);
add_action(‚publish_post‘, ‚add_custom_field_automatically‘);
add_action( ’save_post‘, ‚add_custom_field_automatically‘ );
function add_custom_field_automatically($post_ID) {
global $post;
if(!wp_is_post_revision($post_ID)) {
global $wpdb;
$user_id = $wpdb->get_var("SELECT post_author FROM $wpdb->posts WHERE ID = $post_ID");
$themename = $wpdb->get_var("SELECT meta_value FROM $wpdb->usermeta WHERE meta_key = ‚themeperauthor‘ AND user_id = $user_id");
add_post_meta($post_ID, ‚themeperauthor‘, $themename, true);
}
}
When the user meta field is changed, I want to automatically delete the custom field value and update with the new one
brian
I’ve been working on adding some hidden custom fields on post publish/update (by preceding the field name with „_“) but for some reason I have to update the post twice before the wp_postmeta entries are written to the database.
I’ve tried messing with the priority and experimenting with other action hooks (draft_to_publish, edit_post, etc) but it doesn’t seem to make a difference.
Any ideas?
Editorial Staff
are you using Otto’s trick with the transient API?
Admin
Boba
Thanks for including the source link
Editorial Staff
Thanks for providing an amazing tip
Admin
Daniel Suarez
Thanks Otto another great tip!
Piet
will this work too for custom post types?
sth like add_action(‚publish_custom-post-typ-name‘, ‚add_custom_field_automatically‘);
Otto
Yes, it will.
One downside to this technique that people should be aware of is that if somebody edits a published post, this hook WILL get fired again on the edit. Therefore, you need to check for the meta before adding it, or to update it, or to do whatever makes the most sense for your use-case.
If you only want to get your code fired off on the initial publish only, then you can use the transition_post_status hook. This hook works like this:
add_action('transition_post_status','example',10,3);
function example($new, $old, $post) {
// $new is the new post status ('publish')
// $old is the old post status ('draft')
// $post is the complete Post Object (so use $post->ID for the ID, etc)
}
Then, in here you can do a check for something like this:
if ($new == 'publish' && $old != 'publish')
To have your code only used when the post status actually transitions to publish from whatever it was before. This hook is fired at the same time as the {$status}_{$post-type} hooks are, so the operation of them is basically the same.
Piet
Thanks Otto, will play around with that a bit!
Editorial Staff
Thanks Otto for the clarification.
Admin
Vivek Parmar
thanks for this handy tip. previously while using custom fields i have to work manually. now this will do it automatically. thanks for saving precious time of me