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:
- 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. - Hvis alt, hvad du ønsker, er billedet i fuld størrelse, skal du bruge
wp_get_attachment_url()
i stedet forwp_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 returnererfalse
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; }