it-swarm.com.de

Wie verwende ich den get_image_tag-Filter richtig?

Ich versuche, das title-Attribut für Post-Thumbnails (für bestimmte Posts) zu entfernen, und ich gehe davon aus, dass dies mit dem get_image_tag-Filter möglich ist. Was ich bisher habe, funktioniert jedoch nicht. Was muss ich ändern, damit dies funktioniert? Mein Code:

add_filter('get_image_tag', 'image_no_title');
function image_no_title($title) {
    $title = '';
    return $title;
}

Und die relevante Funktion (aus wp-includes/media.php):

function get_image_tag($id, $alt, $title, $align, $size='medium') {

    list( $img_src, $width, $height ) = image_downsize($id, $size);
    $hwstring = image_hwstring($width, $height);

    $class = 'align' . esc_attr($align) .' size-' . esc_attr($size) . ' wp-image-' . $id;
    $class = apply_filters('get_image_tag_class', $class, $id, $align, $size);

    $html = '<img src="' . esc_attr($img_src) . '" alt="' . esc_attr($alt) . '" title="' . esc_attr($title).'" '.$hwstring.'class="'.$class.'" />';

    $html = apply_filters( 'get_image_tag', $html, $id, $alt, $title, $align, $size );

    return $html;
}
1

Dank des Hinweises von Rarst, dass ich mich am falschen Ort befunden habe, habe ich ein bisschen mehr gegraben und bin zu folgendem Ergebnis gekommen:

add_filter('wp_get_attachment_image_attributes', 'wpse_19029_no_image_title');

function wpse_19029_no_image_title ($attr) 
{
    unset($attr['title']);
    return $attr;
}
3

Filter wirken sich immer auf das erste Argument aus, Rest sind für zusätzliche Infos da und werden standardmäßig nicht einmal übergeben.

add_filter('get_image_tag', 'image_no_title', 10, 4);

function image_no_title( $html, $id, $alt, $title ) {

    return str_replace("title=\"{$title}\"", '', $html);
}
2
Rarst

Ich hatte das gleiche Problem, bei dem ich eine Klasse an das vorhandene Post-Image-Klassenattribut anhängen musste. Mein Code war gemäß Ihrem Beispiel korrekt, konnte jedoch nicht verstehen, warum die Klasse nicht aktualisiert wurde.

Ich habe die Bilder aus der Medienbibliothek erneut in die Posts/Seiten (für ausgewählte Bilder und benutzerdefinierte Felder) eingefügt, nachdem die Aktion und der Filter fertig waren.

Es ist eigentlich ganz logisch ... Ich habe festgestellt, dass der Beitrag in der Datenbank gespeichert und dann extrahiert wird, um den HTML-Code für das 'Front-End' der Website zu generieren. Es wurden jedoch keine Änderungen am Datenbankeintrag vorgenommen, sodass ich dies nicht konnte Erwarten Sie tatsächlich, dass Änderungen sofort auf der Website sichtbar sind!

1
benna