Cómo obtener un campo de imagen personalizado de un ID de publicación específico en WordPress

19 dic 2012, 22:32:56
Vistas: 16.9K
Votos: 0

Tengo una página donde estoy extrayendo contenido de otra publicación, fuera del loop.

He tenido éxito obteniendo el contenido de la publicación específica, pero no puedo obtener la imagen de un campo personalizado (campo de imagen avanzado de ACF).

Esto funciona para obtener el contenido de la publicación con ID 299:

$my_id = 299;
$post_id_299 = get_post($my_id);

$content_299 = $post_id_299->post_content;
$content_299 = apply_filters('the_content', $content_299);
$content_299 = str_replace(']]>', ']]>', $content_299);
$content_299_chars = 238; 
$modcontent_299 = substr($content_299, 0, $content_299_chars);

<p><?php echo $modcontent_299; ?></p>

Esto es lo que necesito para obtener la imagen de la publicación con ID 299 (si existe):

$attachment_id = get_field('image', 299); // Obtener ID del adjunto del campo 'image' para el post 299
$size = 'full'; // Tamaño de imagen deseado
$image = wp_get_attachment_image_src( $attachment_id, $size ); // Obtener datos de la imagen

if( get_field('image', 299) ): // Verificar si existe el campo 'image' para el post 299
   echo '<img src="' . $image[0] . '" alt="' . the_title() .'" width="238" height="158" />';
endif; 

Estoy seguro que necesito cambiar algunas variables para obtener el campo de imagen de la publicación específica, similar a cómo se hace para obtener el contenido, pero estoy confundido sobre cómo hacerlo para un campo personalizado...

0
Todas las respuestas a la pregunta 2
3

consulta la documentación para get_field. cambia:

$attachment_id = get_field('image');

para pasar el ID del post como segundo argumento:

$attachment_id = get_field('image', 299);

o:

$attachment_id = get_field('image', $my_id);
19 dic 2012 22:56:47
Comentarios

Gracias por responder Milo, desafortunadamente eso no funciona - no devuelve nada.

ByteMyPixel ByteMyPixel
19 dic 2012 23:00:04

¿Tu campo está configurado para devolver el ID de la imagen, y no un objeto de imagen o algún tipo de array?

Milo Milo
19 dic 2012 23:01:21

Ya veo - el problema restante estaba en el condicional, necesitaba también actualizar if( get_field('image') ): con if( get_field('image', 299) ): - ¡eso era todo! ¡Gracias por tu ayuda!

ByteMyPixel ByteMyPixel
19 dic 2012 23:07:27
0

creo que estás usando tu código para mostrar el título y el texto alternativo en la imagen de la publicación, entonces pruébalo.

    $post_title  = get_the_title($my_id); // Obtener el título de la publicación

    echo get_the_post_thumbnail($my_id,
        'full', 
        array(
            'alt'   => $post_title, // Texto alternativo para SEO
            'title' => $post_title, // Título mostrado al pasar el ratón
            'class' => 'my_post_img_class' // Clase CSS para la imagen
        )
    );

mostrará

<img src="tu_ruta_de_imagen.jpg" alt="titulo_de_publicacion" title="titulo_de_publicacion" class="my_post_img_class" />

o usa esta función para obtener campos personalizados de la publicación get_post_field('post_content', $my_id);

14 may 2013 11:51:22