He intentado utilizar la «imagen destacada» de la página de inicio (el índice del blog) sin suerte. funciona para todas las páginas, pero no para el hogar.

El código se parece a esto:

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

Ya intenté obtener la miniatura usando el _thumbnail_id meta. Mismo resultado.

Este código se coloca en el archivo de funciones, creo que el problema es que está tratando de obtener la imagen destacada del bucle / publicación.

Muchas gracias de antemano.

Respuesta

si te refieres a la «página de publicaciones», prueba (solo se muestra la sección relevante de tu código):

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 { 

Respuesta

Le sugiero que cualquiera que haga esto considere los siguientes ajustes:

  1. Obtenga el ID de la página / publicación / índice actual usando get_queried_object(). Para un índice de blog que «está configurado para una página, esto devolverá el ID de página correcto.
  2. Si todo lo que desea es la imagen de tamaño completo, use wp_get_attachment_url() en lugar de wp_get_attachment_image_src()

Aquí hay una función rápida que usaría para lograr esto de una manera más sencilla:

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

Personalmente, me gusta evitar la lógica condicional anidada excesiva, el uso de una función puede ayudar con esto.

Responder

Tiene 2 opciones rápidas, a través del archivo de plantilla usando the_post_thumbnail para el bucle. Supongo que está generando los datos en un formato de blog típico y, por lo tanto, su función anterior no funcionará ni actuará de manera muy extraña dentro del ciclo.

En su lugar, intente algo como esto en el archivo de plantilla real donde está su ciclo principal (tal vez index.php o loop.php):

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

O si desea usar una acción en su lugar para alterar el bucle principal, puede usar pre_get_posts, por ejemplo en su archivo functions.php.

Algo como:

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

Observe que lo anterior es verificar 2 parámetros, la consulta principal y la página de inicio, es muy importante verificar si es la consulta principal, de lo contrario alterará todas las consultas.

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

Comentarios

  • No tiene ' Si lee la pregunta correctamente, el usuario no ' no quiere que las publicaciones del blog estén dentro del bucle, quiere la imagen destacada de la página que está asignado a la página de índice del Blog, que es lo que también quiero hacer. has_post_thumbnail() parece funcionar bien en page.php, pero devuelve false cuando se usa en index.php

Respuesta

Esto funciona ..

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

¡Espero que esto ayude!

Respuesta

Cuando estés en la «página de publicaciones», $ publicación comenzará con la primera «publicación» del ciclo. Una forma podría ser usando el «objeto consultado».

Imprima $ wp_query y verá: [objeto_ consultado] [publicaciones] [publicación] – nota: el objeto consultado estará / podría estar vacío en algunas páginas

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

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *