Jeg har prøvd å bruke «featured image» fra hjemmet (bloggindeksen) uten hell. It » s jobber for hver enkelt side, men den fungerer ikke for hjemmet.

Koden ser omtrent slik ut:

// Don"t use on single posts if (!is_single()) { if (is_home()) { if (function_exists("wp_get_attachment_thumb_url")) { $img = wp_get_attachment_image_src(get_post_thumbnail_id(),"full"); $featured_image = $img[0]; } } else { if (function_exists("wp_get_attachment_thumb_url") && has_post_thumbnail()) { $img = wp_get_attachment_image_src(get_post_thumbnail_id($post->ID),"full"); $featured_image = $img[0]; } } if ($featured_image) { ?> // A lot of code... <?php } } 

Jeg har allerede prøvd å skaffe miniatyrbildet ved å bruke metoden _thumbnail_id . Samme resultat.

Denne koden er plassert på funksjonsfilen tror jeg at problemet er at det prøver å få løkken / innleggene som vises.

Tusen takk på forhånd.

Svar

hvis du henviser til «siden for innlegg», så prøv (bare relevant del av koden din vises):

if (is_home() && get_option("page_for_posts") ) { $img = wp_get_attachment_image_src(get_post_thumbnail_id(get_option("page_for_posts")),"full"); $featured_image = $img[0]; } else { 

Svar

Jeg foreslår at alle som gjør dette, bør vurdere følgende justeringer:

  1. Få ID for gjeldende side / innlegg / indeks ved hjelp av get_queried_object(). bloggindeks som er satt til en side, vil dette returnere riktig side-ID.
  2. Hvis alt du ønsker er bildet i full størrelse, bruk wp_get_attachment_url() i stedet for wp_get_attachment_image_src()

Her «er en rask funksjon jeg vil bruke for å oppnå dette på en enklere måte:

/** * Custom Featured Image */ function custom_featured_image() { $queried_obj = get_queried_object(); // Don"t use on single posts (JUST FOR THIS DEMO) if ( is_single() ) return; // Get the featured image ID $image_id = get_post_thumbnail_id( $queried_obj->ID ); // Get the URL for the full sized image $image_src = wp_get_attachment_url( $image_id ); return $image_src; } 

Jeg liker personlig å unngå overdreven nestet betinget logikk, ved å bruke en funksjon kan det hjelpe.

Svar

Du har to raske alternativer, via malfilen ved hjelp av the_post_thumbnail for loop. Jeg antar at du legger ut dataene i et typisk bloggformat, og dermed vil ikke funksjonen din fungere eller fungere veldig rart inne i loop. (kanskje index.php eller loop.php):

 //loop starts if ( has_post_thumbnail() ) { the_post_thumbnail(); } //the_content(); and other stuff //loop ends 

Eller hvis du vil bruke en handling i stedet for å endre hovedsløyfen, kan du bruke pre_get_posts, for eksempel i din functions.php-fil.

Noe som:

add_action( "pre_get_posts", "add_featured_image" ); function add_featured_image( $query ) { if( $query->is_main_query() && $query->is_home() ) { //your image code } } 

Legg merke til at det ovennevnte sjekker to parametere, hovedsøket og hjemmesiden, det er veldig viktig å sjekke om det er hovedsøket, ellers vil det endre alle spørsmål.

Referanse: http://codex.wordpress.org/Plugin_API/Action_Reference/pre_get_posts

Kommentarer

  • Du har ' t lese spørsmålet ordentlig, brukeren vil ikke ' t ønsker å få blogginnleggene inne i sløyfen, han vil ha det fremhevede bildet av siden som div id = «c6e e7fe566 «>

er tildelt Blogg-indeksiden, og det er det jeg også vil gjøre. has_post_thumbnail() ser ut til å fungere bra på page.php, men returnerer false når den brukes i index.php

Svar

Dette fungerer ..

<section style="background-image: <?php if (is_home() && get_option("page_for_posts") ) { $blog_home_id = get_option( "page_for_posts" ); echo "url(".get_the_post_thumbnail_url($blog_home_id, "full").")"; } else { echo "url(".get_the_post_thumbnail_url($post->ID, "full").")"; } ?>;"> 

Håper dette hjelper!

Svar

Når du er på «innleggssiden» begynner $ innlegg med det første «innlegget» i løkken. En måte kan være å bruke «spørret objekt».

Skriv ut $ wp_query, og du vil se: [queried_object] [innlegg] [post] – merk: queried_object vil / kan være tom på noen sider

// get_the_post_thumbnail_url( get_queried_object(), "fullsize" ); // or function ABC_get_the_thumbnail_url() { $queried_object = get_queried_object(); $thumbnail_url = get_the_post_thumbnail_url( $queried_object, "fullsize" ); if ( ! $thumbnail_url ) { return get_template_directory_uri() . "/your-path/default-image.jpg"; // or from a default option } return $thumbnail_url; } 

Legg igjen en kommentar

Din e-postadresse vil ikke bli publisert. Obligatoriske felt er merket med *