Müssen Sie bei der Veröffentlichung Ihrer WordPress-Beiträge automatisch benutzerdefinierte Felder erstellen?
Dies ist ein einfacher Trick, den Entwickler anwenden können, wenn sie neue Funktionen zu ihrer WordPress-Website 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 automatisch benutzerdefinierte Felder bei der Veröffentlichung eines Beitrags in WordPress hinzufügt. Vielleicht möchten Sie auch erfahren, wie Sie das beste WordPress-Hosting auswählen, oder sich unsere Liste der wichtigsten WordPress-Plugins ansehen, um Ihre Website zu erweitern.
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.
Syed Balkhi says
Hey WPBeginner readers,
Did you know you can win exciting prizes by commenting on WPBeginner?
Every month, our top blog commenters will win HUGE rewards, including premium WordPress plugin licenses and cash prizes.
You can get more details about the contest from here.
Start sharing your thoughts below to stand a chance to win!
Sateesh Raghuwanshi says
I need to add this action for custom post type named ‚ad_system‘
nayan says
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 says
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 says
it’s not adding to custom post type
Editorial Staff says
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 says
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 says
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 says
are you using Otto’s trick with the transient API?
Admin
Boba says
Thanks for including the source link
Editorial Staff says
Thanks for providing an amazing tip
Admin
Daniel Suarez says
Thanks Otto another great tip!
Piet says
will this work too for custom post types?
sth like add_action(‚publish_custom-post-typ-name‘, ‚add_custom_field_automatically‘);
Otto says
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 says
Thanks Otto, will play around with that a bit!
Editorial Staff says
Thanks Otto for the clarification.
Admin
Vivek Parmar says
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