the_post_thumbnail und das alt-Attribut

  • Hallo. Kann man in dem folgenden Core irgendwie beim title-Attribut den jeweiligen Seitentitel einbauen also nicht so

    PHP
    <?php the_post_thumbnail('medium', array('class' => 'alignleft', 'alt' => 'alttext', 'title' => 'titletext')); ?>

    sondern vielleicht irgendwie so

    PHP
    <?php the_post_thumbnail('medium', array('class' => 'alignleft', 'alt' => 'alttext', 'title' => '<?php the_title(); ?>')); ?>

    Danke für Hilfe.
    Fisch

    Wenn Fische Fische fischen in Fischen, fischen Fische Fische in Fischen...

    • Anzeige

    Hallo!

    Wenn du gerade an deiner Website arbeitest oder dein aktuelles Hosting überdenkst: Wir betreiben mit NetzLiving eine Hosting-Plattform, die speziell auf Performance, Sicherheit und einfache Verwaltung ausgelegt ist.

    • ✔️ Schnelle Ladezeiten (optimiert für WordPress & Co.)
    • ✔️ Deutsche Server & DSGVO-konform
    • ✔️ Persönlicher Support (kein 0815-Ticket-System)

    Mehr erfahren

  • Ich hab mit dem Feature selber noch nicht gearbeitet, aber das hier sieht so aus, als wäre es die Lösung für Dich:
    http://justintadlock.com/archives/2009/…t-image-feature

    Geh ein Stück runter zur Zwischenüberschrift "Changing the HTML output of the post image". Da wird z.B. das Bild mit einem Link zum Post ausgegeben, und der Link hat das title-Attribut, das Du möchtest. Das ist jetzt zwar nicht ganz das gleiche, aber da das title-Attribut des Links vom Browser dargestellt wird und nicht das title-Attribut des Images müsste Dir das fast so schon reichen, oder?

  • Danke erst einmal für die Hilfe. Auf die Seite bin ich auch gestoßen bei meiner Google-Suche. Habe das auch eingebaut aber irgendwie nimmt er den title nicht. Meine Vermutung, es liegt daran, dass der title auf dem <a> liegt und im Browser wird der title vom <img> angezeigt und der ist ja leider noch unverändert. Oder mache ich da vielelicht was falsch beim einbauen bzw. verstehe ich da doch was falsch?

    bg
    Fisch

    Wenn Fische Fische fischen in Fischen, fischen Fische Fische in Fischen...

  • Also ich bin zumindest relativ sicher, dass der Firefox, wenn beides da ist, immer den title des Links darstellt, weil der halt außen liegt. Andere Browser müssten das ähnlich machen. Steht es denn im Quelltext der Seite dann richtig drin mit diesen Änderungen?

    Ansonsten müsste man das HTML, das in die Funktion reingereicht wird, halt parsen und den alten title gegen den neuen austauschen. Geht auch, ist aber ein wenig aufwändiger. Das müsste dann etwas in der Art werden:

    PHP
    add_filter('post_thumbnail_html', 'my_post_image_html', 10, 3);
    function my_post_image_html($html, $post_id, $post_image_id) {
      $newTitle = esc_attr(get_post_field('post_title', $post_id));
      $newTitle = str_replace('\\', '\\\\', $newTitle);
      $newTitle = str_replace('\$', '\\\$', $newTitle);
      $html = preg_replace('/ title="[^"]*"/i', ' title="' . $newTitle . '"', $html);
      return $html;
    }

    Ok, mit der RegExp und dem Maskieren des Ersetzungsstrings hab ich mich jetzt bestimmt vertan. Das musst Du einfach mal ausprobieren und die Flüchtigkeitsfehler noch rausarbeiten.

    Einmal editiert, zuletzt von Ammaletu (4. August 2010 um 16:47)

  • Hallo Ammaletu,
    das war ne Super Lösung.

    Und wen ich nun "title" und "alt" mit dem Titel gefüllt haben will,

    Also von
    [FONT=Arial Narrow]alt="IMG_0171" title="Galerie unterm Maulbeerbaum"[/FONT]

    zu
    [FONT=Arial Narrow]
    alt="Galerie unterm Maulbeerbaum" title="Galerie unterm Maulbeerbaum"[/FONT]

    Wie muss man dann den Code erweiteren?

    Cu Mac - blog.mactv24.de - Tratsch und Knatsch - Der Blick über den Tellerrand

  • Das sollte einfach analog noch das alt-Attribut mitbehandeln:

    PHP
    add_filter('post_thumbnail_html', 'my_post_image_html', 10, 3);
    function my_post_image_html($html, $post_id, $post_image_id) {
      $newTitle = esc_attr(get_post_field('post_title', $post_id));
      $newTitle = str_replace('\\', '\\\\', $newTitle);
      $newTitle = str_replace('\$', '\\\$', $newTitle);
      $html = preg_replace('/ title="[^"]*"/i', ' title="' . $newTitle . '"', $html);
      $html = preg_replace('/ alt="[^"]*"/i', ' alt="' . $newTitle . '"', $html);
      return $html;
    }

    Ich sehe übrigens gerade, dass das nicht funktioniert, falls aus irgendeinem Grund ' statt " im HTML-Quelltext verwendet wird. Hab ich manchmal schon gesehen in WP-Seiten.

Jetzt mitmachen!

Sie haben noch kein Benutzerkonto auf unserer Seite? Registrieren Sie sich kostenlos und nehmen Sie an unserer Community teil!