WordPress Custom Fields, auch Post Meta genannt, sind Schlüssel-Wert-Paare, die an einen Beitrag, eine Seite oder einen Custom Post Type angehängt sind. Sie liegen in der Tabelle wp_postmeta mit den Spalten meta_id, post_id, meta_key und meta_value (longtext). WordPress unterstützt Custom Fields seit Version 1.5 (Februar 2005). Das native UI sitzt unter Screen Options zum Aktivieren der Custom-Fields-Meta-Box, wird in der Praxis aber kaum genutzt, weil Plugins wie Advanced Custom Fields (ACF) eine deutlich bessere Bearbeitung bieten. ACF wurde 2011 von Elliot Condon erstellt, 2021 von Delicious Brains und im Mai 2022 von WP Engine übernommen. 2025 hat ACF über 2 Millionen aktive Installationen. ACF bringt Field Groups, über 30 Field Types (Text, Number, Email, Image, Gallery, File, Repeater, Flexible Content, Group, Relationship, Post Object, Taxonomy, User, Date Picker, Color Picker, Google Map, oEmbed, WYSIWYG), Conditional Logic, Location Rules und eine klare PHP-API: get_field( 'price' ), the_field( 'subtitle' ), have_rows( 'gallery' ). Das kostenlose ACF enthält die meisten Felder. ACF Pro (von advancedcustomfields.com, derzeit etwa 49 USD pro Jahr für eine Seite bis 249 USD Lifetime für unbegrenzt) ergänzt Repeater, Flexible Content, Gallery, Clone, Options Pages und Block Registration. ACF Blocks (seit ACF 5.8, August 2019) erlauben Entwicklern, Gutenberg-Blöcke in PHP mit ACF-Feldern zu registrieren. Am 10.10.2024 entfernte WordPress.org ACF aus dem Plugin Directory nach einem Markenstreit mit WP Engine und ersetzte es durch einen Community-Fork namens Secure Custom Fields (SCF). ACF Pro blieb über advancedcustomfields.com verfügbar. 2025 koexistieren ACF (von WP Engine) und SCF als separate Plugins.
Wie sieht die wp_postmeta-Tabelle aus?
+-----------+---------+-----------------+----------------+
| meta_id | post_id | meta_key | meta_value |
+-----------+---------+-----------------+----------------+
| 1 | 42 | _edit_lock | 1736178921:1 |
| 2 | 42 | price | 19.99 |
| 3 | 42 | subtitle | Limited Edition|
| 4 | 42 | gallery_0_image | 1023 |
| 5 | 42 | _gallery_0_image| field_64ab123 |
+-----------+---------+-----------------+----------------+Jede Zeile speichert ein Schlüssel-Wert-Paar. Repeater-Reihen aus ACF werden in viele Schlüssel mit Index-Nummern aufgeflacht (gallery_0_image, gallery_1_image). Mit Unterstrich präfixierte Schlüssel sind privat und werden im nativen UI nicht angezeigt.
Native WordPress Custom Fields
- Beitrag oder Seite im Editor öffnen.
- Auf die drei Punkte oben rechts klicken, Preferences, Panels, und Custom Fields aktivieren. Der Editor lädt mit der Meta Box am unteren Rand neu.
- Name (meta_key) und Wert (meta_value) eintragen. Add Custom Field klicken.
- Im Theme abrufen mit
get_post_meta( $post_id, 'price', true ).
Das native UI beschränkt sich auf einfache Textwerte und kennt keine Media Uploader, Dropdowns, Repeater oder Validierung. Daher nutzen fast alle WordPress-Sites ein Plugin für Custom Fields.
Advanced Custom Fields (ACF)
ACF ist das dominante Plugin für Custom Fields. Die kostenlose Version (seit dem Fork ACF oder SCF) reicht für die meisten Seiten. ACF Pro bringt die wichtigsten Zusatzfunktionen:
- Repeater Field: verschachtelte Feldgruppen mit beliebig vielen Zeilen. Z.B. eine FAQ-Sektion mit vielen Frage-Antwort-Paaren.
- Flexible Content Field: aus vordefinierten Layouts (Hero, Text, Galerie, CTA) wählen und Seitensektionen in beliebiger Reihenfolge bauen.
- Gallery Field: mehrere Bilder hochladen und sortieren.
- Clone Field: eine Field Group in einer anderen wiederverwenden.
- Options Pages: seitenweite Einstellungen (Footertext, Social Links, Kontakt) außerhalb einzelner Beiträge speichern.
- ACF Blocks: Gutenberg-Blöcke mit ACF-Feldern als Attributen registrieren, gerendert von einem PHP-Template.
So nutzt du ACF (typischer Workflow)
- Advanced Custom Fields aus dem wordpress.org-Directory (SCF-Fork) installieren oder ACF Pro von advancedcustomfields.com herunterladen.
- Custom Fields, Add New, Field Group benennen, z.B. Product Details.
- Felder hinzufügen: Text Subtitle, Number Price, Image Hero Image, Repeater FAQs (Sub Fields: Text Question, Textarea Answer).
- Location setzen: Show this field group if Post Type is equal to product.
- Veröffentlichen. Die Field Group erscheint nun auf Product-Edit-Screens.
- Im Theme-Template (single-product.php oder einem Block-Template) Felder auslesen:
<?php
$subtitle = get_field( 'subtitle' );
$price = get_field( 'price' );
$hero = get_field( 'hero_image' );
?>
<h1><?php the_title(); ?></h1>
<p class="subtitle"><?php echo esc_html( $subtitle ); ?></p>
<span class="price"><?php echo esc_html( number_format( $price, 2 ) ); ?> EUR</span>
<img src="<?php echo esc_url( $hero['sizes']['large'] ); ?>" alt="<?php echo esc_attr( $hero['alt'] ); ?>">
<?php if ( have_rows( 'faqs' ) ) : ?>
<dl class="faq">
<?php while ( have_rows( 'faqs' ) ) : the_row(); ?>
<dt><?php the_sub_field( 'question' ); ?></dt>
<dd><?php the_sub_field( 'answer' ); ?></dd>
<?php endwhile; ?>
</dl>
<?php endif; ?>Der ACF/SCF-Fork (Oktober 2024)
Am 27.09.2024 kam es zum öffentlichen Streit zwischen WordPress.org und WP Engine. Am 10.10.2024 entfernte Matt Mullenweg Advanced Custom Fields aus dem wordpress.org-Plugin-Directory und ersetzte den Eintrag durch einen Community-Fork namens Secure Custom Fields (SCF). Seiten mit automatischen Plugin-Updates aus wordpress.org erhielten SCF anstelle von ACF. Auswirkungen:
- Das kostenlose ACF-Plugin wird auf advancedcustomfields.com und GitHub vom WP-Engine-Team weiterentwickelt.
- Das kostenlose SCF-Plugin wird vom WordPress-Security-Team gepflegt und behält die ACF-API (get_field etc.).
- ACF Pro wird von WP Engine verkauft und war vom Takedown nicht betroffen.
- Wer ACF vor Oktober 2024 installiert hatte und das Original möchte: von advancedcustomfields.com herunterladen und SCF vorher deinstallieren.
Alternativen zu ACF
| Plugin | Aktive Installationen | Stärken |
|---|---|---|
| ACF (und ACF Pro) | über 2 Mio. | UI-Politur, Pro-Features, großes Ökosystem |
| SCF (Secure Custom Fields, Fork) | über 1 Mio. (seit Oktober 2024) | kostenlos, Drop-in-Ersatz für ACF free |
| Meta Box | über 400.000 | Code-first, schneller, free plus Paid Extensions |
| CMB2 | über 300.000 | Entwicklerbibliothek (kein UI), kostenlos |
| Pods Framework | über 100.000 | CPTs, Felder, eigene Tabellen, Beziehungen |
| Toolset Types | kommerziell | CPTs plus Felder plus Frontend-Formulare |
| Carbon Fields | über 20.000 | Code-first-Framework, kein UI |
Custom Fields und die REST API
Standardmäßig werden Custom Fields nicht über die REST API exponiert. Zum Exponieren:
- Meta-Key mit
register_post_meta()undshow_in_rest => trueregistrieren. Das Feld erscheint dann untermetaauf /wp-json/wp/v2/<post-type>/<id>. - ACF Pro bringt REST-API-Support automatisch mit. ACF-Felder erscheinen unter
acfauf dem Beitrag. - Für WPGraphQL gibt es die Extension WPGraphQL for ACF, die Field-Group-Typen zum GraphQL-Schema hinzufügt.
Das ist wichtig für Headless WordPress. Ein Headless-Frontend liest Custom Fields genauso wie ein PHP-Theme, nur via JSON statt get_field().
Custom Fields und Performance
- Jeder
get_post_meta()-Aufruf ohne Argumente lädt ALLE Meta-Reihen eines Beitrags und cached sie. Folgeabfragen sind dann gratis. - Beiträge per meta_key in WP_Query abzufragen ist bei großen Datenmengen langsam, weil meta_value ein longtext ist und nicht indiziert. Bei mehr als 50.000 Beiträgen lohnt eine eigene Tabelle oder ElasticPress.
- Die native Custom-Fields-Meta-Box lädt im Editor ein Dropdown aller meta_keys site-weit. Bei Seiten mit tausenden Meta-Keys kann das den Editor blockieren. Dropdown abschalten mit
add_filter( 'postmeta_form_keys', '__return_false' ). - ACF speichert zu jedem Feldwert einen Referenzschlüssel (z.B.
_subtitlemit Wertfield_64ab123), um Werte zur Felddefinition zurückzuordnen. Das verdoppelt die Zeilenzahl gegenüber einfachen Custom Fields, ermöglicht aber konsistente Updates bei Änderungen der Field Keys.
Häufige Muster
- Globale Optionen: ACF Options Pages oder ein Options-Custom-Post-Type, der als Singleton abgefragt wird.
- Page Builder ohne Builder: ACF Flexible Content gibt Redakteuren Bausteine (Hero, Two Column, Galerie) ohne Lock-in von Elementor oder WPBakery.
- Verwandte Beiträge: ACF Post Object oder Relationship Field zur Verknüpfung von CPT-Einträgen.
- Wiederverwendbare Inhaltssektionen: ACF Clone Field referenziert eine Field Group innerhalb einer anderen.
- Bedingte Felder: Felder abhängig vom Wert eines anderen einblenden (z.B. Stripe Account ID nur wenn Zahlungsart Stripe ist).
Was InspectWP prüft
InspectWP erkennt ACF, SCF und ähnliche Custom-Field-Plugins anhand geladener Skripte, Body-Klassen und REST-API-Endpunkte. Der Report identifiziert Headless-Setups, die die ACF-REST-Extension nutzen, und meldet öffentlich exponierte Meta-Felder, die interne Daten preisgeben könnten.