Jag har försökt att använda den ”utvalda bilden” från hemmet (bloggindex) utan lycka. Det ” s fungerar för varje enskild sida, men det fungerar inte för hemmet.

Koden ser ungefär så här 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 } } 

Jag har redan försökt få miniatyrbilden med metoden _thumbnail_id . Samma resultat.

Den här koden placeras på funktionsfilen tror jag att problemet är att det försöker få en bild med loop / inlägg.

Tack så mycket i förväg.

Svar

om du hänvisar till ”sidan för inlägg”, försök (endast relevant avsnitt i din kod visas):

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

Jag skulle föreslå att någon gör detta överväga följande justeringar:

  1. Få ID för den aktuella sidan / inlägget / indexet med get_queried_object(). bloggindex som är inställt på en sida kommer att returnera rätt sid-ID.
  2. Om allt du vill är bilden i full storlek använder du wp_get_attachment_url() istället för wp_get_attachment_image_src()

Här ”är en snabbfunktion jag skulle använda för att uppnå detta på ett enklare sätt:

/** * 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; } 

Jag vill personligen undvika överdriven kapslad villkorlig logik, att använda en funktion kan hjälpa till med detta.

Svar

Du har två snabba alternativ, via mallfilen med the_post_thumbnail för loop. Jag antar att du matar ut data i ett typiskt bloggformat och därmed kommer din funktion ovan inte att fungera eller agera väldigt konstigt i slingan.

Testa istället något liknande i själva mallfilen där din huvudslinga är (kanske index.php eller loop.php):

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

Eller om du istället vill använda en åtgärd för att ändra huvudslingan kan du använda pre_get_posts, till exempel i din functions.php-fil.

Något 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 } } 

Lägg märke till att ovanstående kontrollerar två parametrar, huvudfrågan och hemsidan, det är mycket viktigt att kontrollera om det är huvudfrågan, annars ändrar det alla frågor.

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

Kommentarer

  • Du har ' t läser frågan ordentligt, användaren vill inte ' t vill få blogginlägg inuti slingan, han vill ha den utvalda bilden av sidan som tilldelas bloggs indexsida, vilket jag också vill göra. has_post_thumbnail() verkar fungera bra på page.php, men returnerar false när den används i index.php

Svar

Detta fungerar ..

<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").")"; } ?>;"> 

Hoppas det hjälper!

Svar

När du är på ”inläggssidan” börjar $ inlägg med det första ”inlägget” i slingan. Ett sätt kan vara att använda ”förfrågat objekt”.

Skriv ut $ wp_query så ser du: [queried_object] [inlägg] [inlägg] – Obs: queried_object kommer / kan vara tomt på vissa sidor

// 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; } 

Lämna ett svar

Din e-postadress kommer inte publiceras. Obligatoriska fält är märkta *