Support » Allgemeine Fragen » Beitragsbild als Hintergrundbild auf Blogseite

  • Hallo zusammen,

    benutze den folgenden Code in meiner header.php um auf allen Seiten das Beitragsbild als Hintergrundbild im Kopfbereich einzubinden.

    
    <?php $urltest = wp_get_attachment_url( get_post_thumbnail_id($post->ID, 'full') ); ?>
    <div id="titelbild" style="background-image: url(<?php echo $urltest ?>);">
    

    Das klappt auch ganz gut aber leider funktioniert das seltsamerweise nicht auf der Seite, welche ich als Blog definiert habe. Kann mir jemand sagen warum das so ist und wie ich das Problem lösen kann?

    Danke und LG

Ansicht von 6 Antworten - 1 bis 6 (von insgesamt 6)
  • Einzelne Beiträge oder Seiten können „Featured Images“ (auf Deutsch Beitragsbilder) haben. Diese URL der Beitragsbilder kannst du mit der von dir verwendeten Funktion wp_get_attachment_url( get_post_thumbnail_id($post->ID, 'full') ); abrufen.

    Übersichtsseiten – also z.B. Beitragsarchive oder die Seite, die du als Blog-Übersichtsseite festgelegt hast – haben keine eigenen Beitragsbilder, weil sie sich dynamisch aus den vorhandenen Blogbeiträgen zusammensetzen. Hier liefert die Funktion kein Ergebnis. Statt dessen könntest du aber einen Platzhalter wählen, der immer dann angezeigt wird, wenn kein einzelner Blogbeitrag oder keine einzelne Seite angezeigt wird:

    <?php
    if ( is_single() || is_page() ) {
    	$url_backgroundimage = wp_get_attachment_url( get_post_thumbnail_id( $post->ID, 'full' ) );
    } else {
    	$url_backgroundimage = get_stylesheet_directory_uri() . '/images/default_background.jpg';
    }
    ?>
    
    <div id="titelbild" style="background-image: url( <?php echo esc_url( $url_backgroundimage ); ?>);">
    </div>

    Super vielen lieben DANK! Das klappt sehr gut.

    Komischerweise aber nicht überall.
    Habe auch noch ein Forum. Auf der Übersichtsseite, welche unter Seiten definiert ist, wird das eingestellte Beitragsbild angezeigt. Allerdings nicht, wenn man dann ein bestimmtes Forum auswählt und auf dieser Unterseite landet.
    Das verstehe ich nicht, denn an dieser Stelle müsste doch eigentlich auch das Script und die else Anweisung greifen oder ist da auch wieder etwas anders?

    Es kann gut sein, dass WordPress ein anderes Template nutzt, in dem du das if-Statement nicht eingebaut hast. Mit dem Plugin What the File kannst du prüfen, welches Template gerade für die Anzeige verwendet wird.

    Ja, für BBPress habe ich eine eigene Datei angelegt, die bbpress.php
    Aber das if-Statement befindet sich in der header.php und sollte doch dann auf allen Seiten angezeigt werden.

    Hast du mal in den Entwickler-Tools des Browsers nach Fehlermeldungen geschaut?

    Moderator Torsten Landsiedel

    (@zodiac1978)

    Gib doch zum Testen noch etwas anderes aus und schau, ob du wirklich in einem der Fälle landest.

    Vielleicht liefert bbpress für ein Forum bei is_single oder is_page ein True aus und du landest im falschen Zeig deiner If/else-Bedingung.

    Sonst einfach mit den entsprechenden bbPress-Conditionals erweitern:
    https://codex.bbpress.org/bbpress-conditional-tags/

    Gruß, Torsten

Ansicht von 6 Antworten - 1 bis 6 (von insgesamt 6)