Hallo Steffen,
spannende Frage, denn bisher scheint es keinen Theme-Block zu geben, mit dem sich ein Custom Field einfach* ausgeben lassen würde:
(zum Vergrößern anklicken)
Angeblich soll es irgendwelche Premium-Plugins geben, die dafür einen eigenen Block zur Verfügung stellen, aber Geld ausgeben wollte ich jetzt dafür nicht. Also, was tun?
Da Plugins wie Advanced Custom Fields eigene Shortcodes liefern, um Custom Fields auszugeben, erscheint es mir naheliegend, einen eigenen Shortcode zu schreiben. Den kannst du und z.B. mit dem Plugin Code Snippets oder gleich in der functions.php
eines Child-Themes einbinden:
add_shortcode( 'metablock', 'metablock_shortcode' );
function metablock_shortcode() {
$out = '';
// Hole den Wert des Custom Field "helloworld" – bitte CF-Name anpassen
$meta = get_post_meta( get_the_ID(), 'helloworld', true );
// Wenn das Feld einen Eintrag hat, speichere die Ausgabe in einer Variablen.
if( $meta ) {
$out = '<p>Custom Field: ' . esc_attr( $meta ) . '</p>';
}
// Ausgabe des Shortcodes
return $out;
}
Nun kann ich im Theme-Editor z.B. im Templates „Singular“ einen Shortcode-Block und dprt den Shortcode [metablock]
einfügen. Damit der im Theme Twenty Twenty-Three nicht an der Bildschirmseite klebt, sondern bündig mit dem übrigen Text abschließt, packe ich ihn noch in einen Gruppenblock, den ich nicht weiter formatieren muss:
(zum Vergrößern anklicken)
Wenn du sowieso schon ACF nutzt, kannst du natürlich einfach den Shortcode des Plugins nutzen und brauchst nicht selbst einen zu erstellen.
* Für die Nerds unter uns:
Das Beispiel hier ist etwas vereinfacht. Das letzte Attribut in get_post_meta() sorgt dafür, dass nur ein Wert zurückgegeben wird. Sollen mehrere Werte ausgegeben werden, müsste der Code entsprechend erweitert werden.