Jeg har forsøgt at bruge det “featured image” fra hjemmet (blogindekset) uden held. Det ” s arbejder for hver enkelt side, men det fungerer ikke for hjemmet.

Koden ser sådan ud:

// 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 forsøgt at få miniaturebilledet ved hjælp af _thumbnail_id meta. Samme resultat.

Denne kode er placeret på funktionsfilen tror jeg, at problemet er, at det forsøger at få det løkke / indlæg, der vises.

Mange tak på forhånd.

Svar

hvis du henviser til “siden for indlæg”, så prøv (kun det relevante afsnit af din kode 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 nogen gør dette, overvej følgende justeringer:

  1. Få idet for den aktuelle side / post / indeks ved hjælp af get_queried_object(). blogindeks, der er indstillet til en side, returnerer det korrekte side-id.
  2. Hvis alt, hvad du ønsker, er billedet i fuld størrelse, skal du bruge wp_get_attachment_url() i stedet for wp_get_attachment_image_src()

Her er en hurtig funktion, som jeg ville bruge til at opnå dette på en enklere måde:

/** * 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 kan personligt gerne undgå overdreven indlejret betinget logik, ved hjælp af en funktion kan hjælpe med dette.

Svar

Du har 2 hurtige muligheder via skabelonfilen ved hjælp af the_post_thumbnail til sløjfen. Jeg antager, at du udsender dataene i et typisk blogformat, og dermed fungerer din funktion ovenfor ikke eller virker meget underlig inde i sløjfen.

Prøv i stedet noget som dette i den aktuelle skabelonfil, hvor din hovedsløjfe er (måske index.php eller loop.php):

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

Eller hvis du i stedet vil bruge en handling til at ændre hovedsløjfen, kan du bruge pre_get_posts, for eksempel i din functions.php-fil.

Noget 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 } } 

Bemærk, at ovenstående kontrollerer 2 parametre, hovedforespørgslen og hjemmesiden, det er meget vigtigt at kontrollere, om det er hovedforespørgslen, ellers vil det ændre alle forespørgsler.

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

Kommentarer

  • Du har ' t læser spørgsmålet ordentligt, brugeren ' t ønsker at få blogindlæggene inde i sløjfen, han vil have det fremhævede billede af siden, der er tildelt siden med blogindekser, hvilket jeg også vil gøre. has_post_thumbnail() ser ud til at fungere fint på page.php, men returnerer false når det bruges 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åber det hjælper!

Svar

Når du er på “indlægssiden” starter $ indlæg med det første “indlæg” i sløjfen. En måde kan være ved at bruge “forespurgt objekt”.

Udskriv $ wp_query, og du vil se: [queried_object] [posts] [post] – note: queried_object vil / kan være tom på nogle 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; } 

Skriv et svar

Din e-mailadresse vil ikke blive publiceret. Krævede felter er markeret med *