Am „încercat să folosesc” imaginea prezentată „de acasă (indexul blogului) fără noroc. Este” Funcționează pentru fiecare pagină, dar nu funcționează pentru acasă.
Codul arată cam așa:
// 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 } }
Am încercat deja să obțin miniatura folosind meta _thumbnail_id . Același rezultat.
Acest cod este plasat în fișierul cu funcții, cred că problema este că încearcă să obțină imaginea prezentată în buclă / postări.
Mulțumesc mult în avans.
Răspuns
dacă vă referiți la „pagina pentru postări”, încercați (este afișată doar secțiunea relevantă a codului dvs.):
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 {
Răspuns
Aș sugera oricui face acest lucru să ia în considerare următoarele ajustări:
- Obțineți ID-ul paginii / postării / indexului curent folosind
get_queried_object()
. Pentru un indexul blogului care este setat la o pagină, acesta va returna ID-ul corect al paginii. - Dacă tot ce doriți este imaginea de dimensiuni mari, utilizați
wp_get_attachment_url()
în loc dewp_get_attachment_image_src()
Aici „o funcție rapidă pe care aș folosi-o pentru a realiza acest lucru într-un mod mai simplu:
/** * 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; }
Personal îmi place să evit logica condițională imbricată excesivă, utilizarea unei funcții poate ajuta la acest lucru.
Răspuns
Aveți 2 opțiuni rapide, prin fișierul șablon folosind the_post_thumbnail
pentru buclă. Presupun că transmiteți datele într-un format tipic de blog și astfel funcția dvs. de mai sus nu va funcționa sau nu va acționa foarte ciudat în buclă.
Încercați în schimb ceva de genul acesta în fișierul șablon propriu-zis în care este bucla dvs. (poate index.php sau loop.php):
//loop starts if ( has_post_thumbnail() ) { the_post_thumbnail(); } //the_content(); and other stuff //loop ends
Sau dacă doriți să utilizați o acțiune în schimb pentru a modifica bucla principală, puteți utiliza pre_get_posts
, de exemplu în fișierul funcții.php.
Ceva de genul:
add_action( "pre_get_posts", "add_featured_image" ); function add_featured_image( $query ) { if( $query->is_main_query() && $query->is_home() ) { //your image code } }
Observați că cele de mai sus verifică 2 parametri, interogarea principală și pagina de pornire, este foarte important să verificați dacă este interogarea principală, altfel va modifica toate interogările.
Referință: http://codex.wordpress.org/Plugin_API/Action_Reference/pre_get_posts
Comentarii
- Nu aveți ' nu a citit corect întrebarea, utilizatorul nu ' nu dorește să obțină postările de blog în theloop, vrea imaginea prezentată a paginii care este alocat paginii index blog, ceea ce vreau să fac și eu.
has_post_thumbnail()
pare să funcționeze bine pe page.php, dar returneazăfalse
atunci când este utilizat în index.php
Răspuns
Acest lucru funcționează ..
<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").")"; } ?>;">
Sper că acest lucru vă va ajuta!
Răspuns
Când vă aflați în „pagina de postări” $ post va începe cu primul „post” din buclă. O modalitate ar putea fi folosind „obiectul interogat”.
Imprimați $ wp_query și veți vedea: [queried_object] [posts] [post] – notă: queried_object va / ar putea fi gol în unele pagini
// 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; }