Filtro de galeria personalizado com legenda de imagem como título de link?

Eu uso uma function de galeria personalizada para alterar a marcação normal do WordPress. Normalmente está bem, mas não consigo descobrir como adicionar a legenda da imagem como um atributo TITLE no link de miniatura. (A checkbox de luz que estou usando transforma o atributo do título em uma legenda.)

Aqui está o código relevante do filtro:

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; }

Essa segunda linha de $link com str_replace é tão longe que eu consegui. Eu pensei que talvez eu pudesse obter o wp_get_attachment_link para produzir um atributo de título e, quando não consegui encontrar uma solução, usei str_replace, mas não sei como obter a legenda da imagem onde as palavras “título de teste” estão atualmente.

Solutions Collecting From Web of "Filtro de galeria personalizado com legenda de imagem como título de link?"

Encontrei uma solução de trabalho nos Fóruns WordPress. Aqui está o código:

 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; 

A publicação original está aqui: https://wordpress.org/support/topic/add-the-title-of-an-image-to-the-image-link-in-gallery