Benutzerdefiniertes Feld als hervorgehobene Bildunterschrift

Das Problem ist: Meine vorgestellte Bildunterschrift wird nicht angezeigt, da sie (noch) in einem benutzerdefinierten Feld (wpcf-bildunterschrift) gespeichert ist.Ich kann leicht auf das customfield zugreifen, aber nicht auf das Feld, in dem WordPress seine Metadaten für Bilder speichert In und da die Metadaten für das Bild nicht mit dem Bild gespeichert werden, muss ich mich auf den Post verlassen, der das Bild verwendet, um eine Verbindung zwischen beiden zu haben, dem Bild und den Daten.

Wie kann ich den Wert aus dem benutzerdefinierten Feld meines Beitrags in das Beschriftungsfeld des ausgewählten Bildes kopieren?

Solutions Collecting From Web of "Benutzerdefiniertes Feld als hervorgehobene Bildunterschrift"

Hier ist eine Möglichkeit, das benutzerdefinierte Feld mit dem post_thumbnail_html Filter als post_thumbnail_html :

 add_filter( 'post_thumbnail_html', function( $html, $post_id ) { if( $html && $caption = get_post_meta( $post_id, 'wpcf-bildunterschrift', true ) ) $html .= sprintf( '

%s

', sanitize_text_field( $caption ) ); return $html; }, 10, 2 );

Hoffentlich können Sie dies Ihren Bedürfnissen anpassen.

Aktualisieren

Laut Ticket # 12235 haben wir ein neues Template-Tag, in WP 4.6+, um die hervorgehobene Bildunterschrift anzuzeigen, nämlich:

 the_post_thumbnail_caption() 

wo es ausgegeben wird, ist filterbar durch den Filter the_post_thumbnail_caption .

Es ist ein Wrapper für die function:

 get_the_post_thumbnail_caption() 

Das ist wieder Wrapper für die function:

 wp_get_attachment_caption() 

Diese function ruft die Beschriftung aus dem Feld post_excerpt des post_excerpt , und die Ausgabe ist über den Filter wp_get_attachment_caption filterbar.

Beispiel

Wenn unser Theme dieses neue Template-Tag verwendet, könnten wir es filtern mit:

 add_filter( 'the_post_thumbnail_caption', function( $caption ) { if( $custom = get_post_meta( get_the_ID(), 'wpcf-bildunterschrift', true ) ) $caption = sanitize_text_field( $custom ); return $caption; }, 10, 2 ); 

Beachten Sie, dass wir hier z. B. die möglichen HTML-Tags aus dem benutzerdefinierten Feld entfernen. Wenn Sie HTML unterstützen möchten, können Sie sich die Diskussion im Ticket ansehen.