Cómo obtener la fuente de una imagen de metadatos personalizados
Estoy trabajando en una plantilla de página para un CPT (tipo de publicación personalizado) y me gustaría obtener la fuente de una imagen de metadatos personalizados.
Para las imágenes destacadas (post_thumbnail) esto es bastante fácil usando wp_get_attachment_image_src()
, pero si hago var_dump( $post->ID )
no veo un valor para la fuente de mi imagen adjunta en los metadatos personalizados.
¿Cómo puedo obtener el ID de mi imagen en metadatos personalizados para conseguir su fuente? Gracias :)
ACTUALIZACIÓN Esto es lo que tengo hasta ahora:
<?php $portfolio_image_one = get_post_meta( $post->ID, '_cmb_portfolio_image_one', true ); ?>
<?php $portfolio_image_two = get_post_meta( $post->ID, '_cmb_portfolio_image_two', true ); ?>
<?php $portfolio_image_three = get_post_meta( $post->ID, '_cmb_portfolio_image_three', true ); ?>
<?php if ( has_post_thumbnail() ) {
$large_image_url = wp_get_attachment_image_src( get_post_thumbnail_id(), 'large'); ?>
<a class="featured-image" href="<?php echo $large_image_url[0] ?>" title="' . <?php the_title_attribute('echo=0') ?> . '">
<?php the_post_thumbnail('medium', array('class' => 'img-polaroid')); ?>
</a>
<?php } ?>
Básicamente, me gustaría obtener el ID para mis imágenes en post_meta de manera similar al enfoque usado para la imagen destacada.

¿Imagen Meta Personalizada? ¿Qué es eso?
¿Quieres decir que,
estás insertando una imagen en un campo personalizado (campo meta de la publicación) dentro de tu meta box?
estás insertando una imagen como un adjunto o miniatura de la publicación?
Estas son dos cosas muy diferentes, una de las cuales trata con,
add_post_meta
la otra,
wp_insert_attachment
Esta última inserta adjuntos en tu biblioteca de medios que está asociada con tu tabla de base de datos wp_posts
.
Por otro lado, el meta de la publicación (es decir, add_post_meta
etc.) está asociado con tu tabla de base de datos wp_postmeta
.
Los adjuntos en realidad se clasifican como un post_type
al igual que post
o page
o tu custom_post_type
, por ejemplo.
Los adjuntos, como tipo de publicación, pueden o no estar asociados con el ID de una publicación, almacenado como un entero en la columna post_parent
de tu base de datos wp_posts
. Si está establecido en 0
, significa que el adjunto no tiene padre y no está asociado con ninguna publicación en particular.
Dejando la teoría a un lado...
Puede que estés intentando acceder a un adjunto que simplemente no existe en primer lugar.
$attachment_id = 20; //ejemplo del ID del adjunto que quieres recuperar
$attachment = wp_get_attachment_image_src( $attachment_id );
echo $attachment[0];
El código anterior es útil para recuperar un adjunto que no está asociado con ninguna publicación en particular.
$post_id = 100; //ejemplo de ID de publicación
$attachment = wp_get_attachment_thumb_url( $post_id );
echo $attachment; //devuelve la URL de la imagen adjunta a la publicación
Mientras que para recuperar un valor, independientemente de cuál sea ese valor, cuando se trata de meta de publicaciones (como te referiste como imagen meta personalizada), se requiere el uso de,
get_post_meta
En uso,
$post_id = get_the_ID();
$meta = get_post_meta($post_id, 'your_meta_key');
echo $meta;
Referencias de la API
- WordPress API: add_post_meta
- WordPress API: wp_get_attachment_image_src
- WordPress API: wp_get_attachment_thumb_url
- WordPress API: wp_insert_attachment
- WordPress API: get_post_meta
ACTUALIZACIÓN
Basado en tu código,
$portfolio_image_one = get_post_meta( $post->ID, '_cmb_portfolio_image_one', true );
El valor post_meta se guarda en tu variable,
$portfolio_image_one
Lo que necesitas hacer es,
echo $portfolio_image_one;
De lo contrario, no pasará nada.
Si hay un valor almacenado para el meta_key
, es decir, _cmb_portfolio_image_one
, entonces al mostrar el resultado de la variable, se te presentará tu meta_value
, sea cual sea ese valor, como http://dominio.com/mi_imagen.jpg
, por ejemplo.
Si $post->ID se usa fuera del bucle, tendrás problemas, por lo que debes referirte a mi ejemplo anterior, pero con tu código,
$post_id = get_the_ID();
$portfolio_image_one = get_post_meta($post_id, '_cmb_portfolio_image_one', true);
echo $portfolio_image_one;

Hola, gracias por la respuesta detallada, desafortunadamente no responde mi pregunta. Actualizaré mi publicación para mostrarte con qué estoy trabajando.
