Olen yrittänyt käyttää kodin ”esillä olevaa kuvaa” (blogihakemisto) ilman onnea. Se ” ne toimivat jokaisella sivulla, mutta se ei toimi kotona.
Koodi näyttää tältä:
// 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 } }
Yritin jo hankkia pikkukuvan _thumbnail_id -metan avulla. Sama tulos.
Tämä koodi on sijoitettu Uskon, että funktiotiedostossa ongelma on siinä, että se yrittää saada silmukan / viestien esittelykuvan.
Kiitos paljon etukäteen.
Vastaa
jos viitat ”viestisivulle”, yritä sitten (näytetään vain koodisi asiaankuuluva osa):
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 {
Vastaus
Ehdotan, että joku, joka tekee tämän, harkitsee seuraavia muutoksia:
- Hae nykyisen sivun / viestin / hakemiston tunnus käyttämällä
get_queried_object()
. blogihakemisto, joka on asetettu sivulle, palauttaa oikean sivun tunnuksen. - Jos haluat vain täysikokoisen kuvan, käytä
wp_get_attachment_url()
wp_get_attachment_image_src()
Tässä pikatoimintoa käytän tämän saavuttamiseksi yksinkertaisemmalla tavalla:
/** * 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; }
Haluan henkilökohtaisesti välttää liiallista sisäkkäistä ehdollista logiikkaa. Funktion käyttäminen voi auttaa tässä.
Vastaa
Sinulla on kaksi nopeaa vaihtoehtoa mallitiedoston kautta käyttämällä the_post_thumbnail
-silmukkaa. Oletan, että tulostat tiedot tyypillisessä blogimuodossa, joten yllä oleva toimintosi ei toimi tai toimi hyvin outoa silmukan sisällä.
Kokeile sen sijaan jotain tällaista todellisessa mallitiedostossa, jossa pääsilmukka on (ehkä index.php tai loop.php):
//loop starts if ( has_post_thumbnail() ) { the_post_thumbnail(); } //the_content(); and other stuff //loop ends
Tai jos haluat käyttää toimintoa pääpiirin muuttamiseen, voit käyttää pre_get_posts
, esimerkiksi function.php-tiedostossa.
Jotain:
add_action( "pre_get_posts", "add_featured_image" ); function add_featured_image( $query ) { if( $query->is_main_query() && $query->is_home() ) { //your image code } }
Huomaa, että yllä tarkastetaan 2 parametria, pääkysely ja kotisivu, on erittäin tärkeää tarkistaa, onko se pääkysely, muuten se muuttaa kaikkia kyselyitä.
Viite: http://codex.wordpress.org/Plugin_API/Action_Reference/pre_get_posts
kommentit
- Sinulla ei ole ' ei lue kysymystä kunnolla, käyttäjä ei halua ' halua saada blogiviestejä silmukkaan, hän haluaa sivun suositellun kuvan, joka määritetään Blogin hakemistosivulle, minkä haluan myös tehdä.
has_post_thumbnail()
näyttää toimivan hyvin sivulla.php, mutta palauttaafalse
, kun sitä käytetään hakemistossa index.php
vastaus
Tämä toimii ..
<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").")"; } ?>;">
Toivottavasti tämä auttaa!
Vastaa
Kun olet ”viestisivulla”, $ -viesti alkaa silmukan ensimmäisellä ”viestillä”. Yksi tapa voisi olla ”kysytyn objektin” käyttäminen.
Tulosta $ wp_query ja näet: [kyselty_objekti] [viestit] [viesti] – huomautus: kyselty_objekti tulee / voi olla tyhjä joillakin sivuilla
// 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; }