benutzerdefinierter Galeriefilter mit Bildunterschrift als Linktitel?

Ich verwende eine benutzerdefinierte Galeriefunktion, um das normale WordPress-Markup zu ändern. Normalerweise ist es in Ordnung, aber ich kann nicht wirklich herausfinden, wie man die Bildunterschrift als TITLE-Attribut auf dem Thumbnail-Link hinzufügt. (Der von mir verwendete Leuchtkasten verwandelt das Titelattribut in eine Bildunterschrift.)

Hier ist der relevante Code aus dem Filter:

foreach ( $attachments as $id => $attachment ) { $link = isset($attr['link']) && 'file' == $attr['link'] ? wp_get_attachment_link($id, $size, false, false) : wp_get_attachment_link($id, $size, true, false); $link = str_replace('><img',$link); $output .= ""; $output .= " $link "; if ( $captiontag && trim($attachment->post_content) ) { $output .= "  " . wptexturize($attachment->post_content) . " "; } $output .= ""; if ( $columns > 0 && ++$i % $columns == 0 ) $output .= ''; } $output .= " 
\n"; return $output; }

Diese zweite $link str_replace Zeile mit str_replace ist soweit ich gekommen bin. Ich dachte, vielleicht könnte ich wp_get_attachment_link bekommen, um ein Titelattribut auszugeben, und wenn ich keine Lösung finden konnte, habe ich str_replace benutzt, aber ich weiß nicht, wie ich die Bildunterschrift bekommen soll, wo die Worte “test caption” sind.

Solutions Collecting From Web of "benutzerdefinierter Galeriefilter mit Bildunterschrift als Linktitel?"

Ich habe eine funktionierende Lösung in den WordPress Foren gefunden. Hier ist der Code:

 function add_img_title_to_anchor($content) { /* Find internal links */ //Check the page for linked images $search = '/]*?)>]*?)\/>< \/a>/i'; preg_match_all( $search, $content, $matches, PREG_SET_ORDER); //Check which attachment is referenced foreach ($matches as $val) { // Only if the Link doesn't already have a Title attribute, we work if (!preg_match("#title=#", $val[1])) { // Find all Link attributes and sanitize the Href att $anchor_temp = preg_match_all("#([az-]+?)=(['\"]{1})([^'\"]*)(['\"]{1})#", $val[1], $matches_anchor); foreach ($matches_anchor[1] as $key => $value) { $anchor_atts[$value] = $matches_anchor[3][$key]; } // Find all Image attributes $img_temp = preg_match_all("#([az-]+?)=([\"]{1})([^\"]*)([\"]{1})#", $val[2], $matches_img); foreach ($matches_img[1] as $key => $value) { $img_atts[$value] = $matches_img[3][$key]; } // Get the Image Title attribute and copy it to the Link attributes // Case 1. If Image Title exists we use it if (isset($img_atts["title"]) && $img_atts["title"] != "") { $anchor_atts["title"] = $img_atts["title"]; } // Case 2. If no we use the Alt attribute else { $anchor_atts["title"] = $img_atts["alt"]; } // Rebuilt the HTML tags $anchor_attributes = array(); foreach ($anchor_atts as $key => $value) { $anchor_attributes[] = $key . '="' . $value . '"'; } $img_attributes = array(); foreach ($img_atts as $key => $value) { $img_attributes[] = $key . '="' . $value . '"'; } // Replace the previous tags by the new $replacement = ''; $content = str_replace($val[0], $replacement, $content); } } return $content; 

Der ursprüngliche Beitrag ist hier: https://wordpress.org/support/topic/add-the-title-of-an-image-to-the-image-link-in-gallery