Ich arbeite daran, ein benutzerdefiniertes Thema zu erstellen, und habe ein bisschen mit diesem Thema zu kämpfen. Ich versuche, die HTML-Ausgabe der the_post_thumbnail();
Funktion zu ändern . Ich muss dies tun, weil ich versuche, Retina-Bilder auf meiner Website zu unterstützen und die Funktionalität lieber in mein Thema einbinden möchte, als ein Plugin in das Backend zu laden.
Standardmäßig the_post_thumbnail();
nur Anrufe, get_the_post_thumbnail();
die ich hier gefunden habe . Mein erster Gedanke war , mich in den Filter 'post_thumbnail_html' einzufügen , aber ich kann ihn anscheinend nicht zum Laufen bringen. Damit...
So rufe ich meine Post-Thumbnails in der Schleife auf:
<?php the_post_thumbnail('custom-thumbnail-size', array('class' => 'unique-class-here', 'title' => 'unique-title-here')); ?>
Dies ist der Code, den ich ausgeben muss, wenn ich the_post_thumbnail();
...
<img src="" alt="" data-src="image.png" data-alt="Alt text" class="retina unique-class-here" />
Und der folgende Code ist der, den ich derzeit in meiner Datei functions.php habe:
<?php
function modify_post_thumbnail_html($html, $post_id, $post_thumbnail_id, $size, $attr) {
$src = wp_get_attachment_image_src(get_post_thumbnail_id(), $size);
$html = '<img src="" alt="" data-src="' . $src['0'] . '" data-alt="" class="retina" />';
return $html;
}
add_filter('post_thumbnail_html', 'modify_post_thumbnail_html', 99, 5);
?>
Ein paar Dinge zu beachten. Ich bin nicht sicher, wie ich den entsprechenden Metadatentext im Attribut 'data-alt' übergeben soll. Außerdem muss ich in der Lage sein, die spezifische post_thumbnail-Größe zu übergeben, die ich benötige, da ich in meinem gesamten Thema benutzerdefinierte post_thumbnail-Größen verwende. Zuletzt können Sie sehen, dass das Attributarray zusätzlich zur Standardklasse 'retina' sowie allen anderen Attributen in diesem Array Klassen übergeben muss.
Vielen Dank im Voraus für jede Hilfe. Es ist wirklich nicht viel online zu diesem Thema und ich dachte, meine Frage sei anders genug, um einen zusätzlichen Beitrag für diese Community zu rechtfertigen. Bitte lassen Sie mich wissen, wenn Sie Gedanken, Lösungen und / oder Erläuterungen haben.