Erhalten Sie eine eingebettete Bildunterschrift

Ich versuche, die Beschriftung von post-eingebetteten Bildern dann auf einem Leuchtkasten zu verwenden.

Das ist mein Code:

function my_theme_prefix_content_gallery( $content ) { global $post; $args = array( 'post_type' => 'attachment', 'post_mime_type'=>'image', 'numberposts' => 1, 'post_status' => null, 'post_parent' => $post->ID, ); $attachments = get_posts( $args ); if ( $attachments ) { foreach ( $attachments as $attachment ) { $caption = $attachment->post_excerpt; } } $pattern = "//i"; $replacement = ''; $content = preg_replace( $pattern, $replacement, $content ); return $content; } add_filter( 'the_content', 'my_theme_prefix_content_gallery' ); 

Was ich im Moment (Code oben) habe, ist die Beschriftung von anderen Bildern in der Mediathek. Wie bekomme ich die Bildunterschrift, die ich sehe?

BEARBEITEN

Das Magnific Popup-Bit für das eingebettete Bildfenster:

  $('a[rel="lightbox"]').magnificPopup ({ type: 'image', mainClass: 'mfp-fade', fixedContentPos: false, removalDelay: 350, gallery: { enabled: true } }); 

Mit diesem Code kann ich eingebettete Bilder in Magnific Popup öffnen, wenn ich darauf klicke. Alles, was ich vermisse, ist eine Möglichkeit, ihre Bildunterschriften zu zeigen, wenn sie in Magnific Popup geöffnet werden.

Solutions Collecting From Web of "Erhalten Sie eine eingebettete Bildunterschrift"

Wenn ich richtig verstanden habe, versuchen Sie, jedem Bild, das in einer Post-Galerie eingebettet ist, ein benutzerdefiniertes rel-Attribut und ein title-Attribut basierend auf der Anhangsbeschriftung hinzuzufügen. Anstatt den Inhalt zu analysieren, können Sie versuchen, den Anker, der die Bilder 'wp_get_attachment_link' mithilfe des Filters 'wp_get_attachment_link' zu ändern.

 < ?php function wpse221533_add_caption_title_to_content_gallery_image_attachments( $markup, $id, $size, $permalink, $icon, $text ) { //Target only images if ( ! wp_attachment_is_image( $id ) ) : return $markup; endif; //Limit the scope of the new attributes $post_types = array( 'post', 'page' ); if ( ! is_singular( $post_types ) ) : return $markup; endif; //Get attachment data $current_attachment_object = get_post( $id ); //Get attachment caption $current_attachment_caption = $current_attachment_object->post_excerpt; //Nothing wrong with regex, but str_replace is cheaper $markup = str_replace( ' href=', ' rel="lightbox" title="' . $current_attachment_caption . '" href=', $markup ); return $markup; } add_filter( 'wp_get_attachment_link', 'wpse221533_add_caption_title_to_content_gallery_image_attachments', 10, 6 ) ; ?> 

BEARBEITEN 16/04/06

Tatsächlich habe ich das nicht richtig verstanden, da ich mich auf die Bildergalerien der Beiträge und die einzelnen Bildanhänge der Posts bezog. Der obige Code funktioniert nur für Galerien.

Dieser andere Code wird es für einzelne Bildanhänge tun:

 < ?php function wpse221533_add_caption_title_to_content_single_image_attachments( $content ) { //Limit the scope of the new attributes $post_types = array( 'post', 'page' ); if ( ! is_singular( $post_types ) ) : return $content; endif; //Parse the content DOM for links $doc = new DOMDocument(); $doc->loadHTML( $content ); $anchors = $doc->getElementsByTagName( 'a' ); //Parse each link foreach ( $anchors as $anchor ) : //Get the rel attribute $anchor_rel = $anchor->getAttribute( 'rel' ); //Get the image ID based on the rel attribute $current_attachment_id = substr( strrchr( $anchor_rel, "-" ), 1 ); //Check if the extracted ID is actually a number if ( ! is_numeric( $current_attachment_id ) ) : return $content; endif; //Target only images if ( ! wp_attachment_is_image( $current_attachment_id ) ) : return $content; endif; //Get the attachment object $current_attachment_object = get_post( $current_attachment_id ); //Get the attachment caption $current_attachment_caption = $current_attachment_object->post_excerpt; //Set the rel attribute $anchor->setAttribute( 'rel', 'lightbox' ); //Finally set the title attribute based on the attachment caption $anchor->setAttribute( 'title', $current_attachment_caption ); endforeach; //Save the DOM changes $content = $doc->saveHTML(); return $content; } add_filter( 'the_content', 'wpse221533_add_caption_title_to_content_single_image_attachments', 10, 1 ); ?>