Banner erscheint auf Seiten, aber nicht auf Posts; nenne es bedingte Verwirrung

Ich habe ein Bannerbild, das auf den gewünschten Seiten angezeigt wird. Allerdings habe ich auch eine Seite als Blog bezeichnet, wo sie nicht erscheint. Gibt es eine Möglichkeit, dieses Banner auf einer Seite anzuzeigen, die eine Blogvorlage verwendet? Versuchte herumzuspielen, indem is_home() oder is_page( $id ) hinzufüge, um unten zu codieren, aber ich fange nach Strohhalmen, schätze deine Gedanken

 //* Add Header Images on Posts/Pages add_image_size( 'header-img', 1600); add_action('after_header', 'site_banner', 0); function site_banner(){ if( !is_singular( 'page' ) ) return; if( has_post_thumbnail() && is_page() ) : $ftbanner = wp_get_attachment_image_src( get_post_thumbnail_id( get_the_ID() ), 'header-img' ); $banner = $ftbanner[0]; echo '
' . "\n"; echo '' . "\n"; echo '
' . "\n"; endif; }

Solutions Collecting From Web of "Banner erscheint auf Seiten, aber nicht auf Posts; nenne es bedingte Verwirrung"

Da Sie eine bestimmte Seite als Post-Archiv (Blog) festgelegt haben, handelt es sich nicht mehr um eine Standardseite. die Bedeutung is_page() wird wahrscheinlich fehlschlagen. Da Ihre Blog-Seite jetzt eher ein Archiv ist, wird sie aufgrund Ihrer ersten Bedingung automatisch zurückgegeben.

  • is_singular() – Gibt true wenn eine einzelne Seite, Post oder Post is_singular() .

Also, was du sagst, ist, wenn wir NICHT eine Singular Page sehen und dann zurückkehren. Da Blog nicht länger eine einzelne Seite ist, sagen wir stattdessen:

 if( ! is_page() && ! is_home() ) return; 

Als nächstes, da diese Blog-Seite nun ein Archiv ist, können wir nicht auf den global $post antworten, um uns die korrekte ID für die Blog-Seite zu geben, daher wird get_the_ID() fehlschlagen. Was wir tun müssen, ist, die Blog-ID folgendermaßen zu verwenden:

 $blog_id = get_option( 'page_for_posts' ); 

Ich habe unten einige Freiheiten mit Ihrer function genommen, aber es sollte genauso funktionieren.

 //* Add Header Images on Posts/Pages add_image_size( 'header-img', 1600 ); add_action( 'after_header', 'site_banner', 0 ); function site_banner() { if( ( is_page() || is_home() ) ) { $post_id = ( is_home() ? get_option( 'page_for_posts' ) : get_the_ID() ); if( has_post_thumbnail( $post_id ) ) { $ftbanner = wp_get_attachment_image_src( get_post_thumbnail_id( $post_id ), 'header-img' ); $banner = $ftbanner[0]; echo '
' . "\n"; echo '' . "\n"; echo '
' . "\n"; } } }

Was ich hier anders mache, ist auf Anhieb. Ich stelle sicher, dass wir entweder eine Seite oder die Blog-Seite sehen und wenn wir sind, setze die $post_id und $post_id dann, dass diese Seite einen vorgestellten $post_id hat. Wenn es einen Satz hat, zeigen Sie das Bannerbild an.