Ik “heb geprobeerd de” uitgelichte afbeelding “van thuis (de blogindex) zonder geluk te gebruiken. werkt voor elke afzonderlijke pagina, maar het werkt niet voor thuis.

De code ziet er ongeveer zo uit:

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

Ik heb al geprobeerd de miniatuur te verkrijgen met de _thumbnail_id meta. Hetzelfde resultaat.

Deze code is geplaatst in het functiesbestand, denk ik dat het probleem is dat het probeert de afbeelding van de lus / posts te krijgen.

Bij voorbaat hartelijk dank.

Antwoord

als je verwijst naar de “pagina voor berichten”, probeer dan (alleen relevante sectie van je code getoond):

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 { 

Antwoord

Ik zou iedereen die dit doet, de volgende aanpassingen willen voorstellen:

  1. Haal de ID van de huidige pagina / post / index op met get_queried_object(). Voor een blogindex die is ingesteld op een pagina, zal dit de juiste pagina-ID retourneren.
  2. Als je alleen de afbeelding op volledige grootte wilt, gebruik dan wp_get_attachment_url() in plaats van wp_get_attachment_image_src()

Hier “een snelle functie die ik” zou gebruiken om dit op een eenvoudigere manier te bereiken:

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

Persoonlijk wil ik buitensporige geneste voorwaardelijke logica vermijden, het gebruik van een functie kan hierbij helpen.

Antwoord

Je hebt 2 snelle opties, via het sjabloonbestand met the_post_thumbnail voor de lus. Ik neem aan dat je de gegevens in een typisch blogformaat uitvoert en dat je functie hierboven dus niet “werkt of heel raar doet in de lus.

Probeer in plaats daarvan zoiets in het eigenlijke sjabloonbestand waar je hoofdlus is (misschien index.php of loop.php):

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

Of als je in plaats daarvan een actie wilt gebruiken om de hoofdlus te wijzigen, kun je pre_get_posts, bijvoorbeeld in uw functions.php-bestand.

Iets als:

add_action( "pre_get_posts", "add_featured_image" ); function add_featured_image( $query ) { if( $query->is_main_query() && $query->is_home() ) { //your image code } } 

Merk op dat het bovenstaande is het controleren van 2 parameters, de hoofdquery en de startpagina, het is erg belangrijk om te controleren of dit de hoofdquery is, anders worden alle querys gewijzigd.

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

Reacties

  • Je hebt ' Als de vraag niet goed wordt gelezen, ' wil de gebruiker de blogberichten niet binnen de lus krijgen, hij wil de uitgelichte afbeelding van de pagina die s toegewezen aan de Blog-indexpagina, en dat is wat ik ook wil doen. has_post_thumbnail() lijkt goed te werken op page.php, maar retourneert false wanneer gebruikt in index.php

Answer

Dit werkt ..

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

Ik hoop dat dit helpt!

Antwoord

Wanneer je op de “berichtenpagina” bent, zal $ post beginnen met het eerste “bericht” in de lus. Een manier zou kunnen zijn door het “queried object” te gebruiken.

Druk $ wp_query af en je zult zien: [queried_object] [posts] [post] – opmerking: queried_object zal / kan op sommige paginas leeg zijn

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

Geef een reactie

Het e-mailadres wordt niet gepubliceerd. Vereiste velden zijn gemarkeerd met *