Come ottenere il sorgente di un'immagine meta personalizzata in WordPress?
Sto lavorando su un template di pagina per un CPT (custom post type) e vorrei ottenere il sorgente di un'immagine meta personalizzata.
Per le thumbnail dei post è abbastanza semplice usando wp_get_attachment_image_src()
, ma se uso var_dump( $post->ID )
non vedo un valore per il sorgente della mia immagine meta allegata personalizzata.
Quindi come posso ottenere l'ID della mia immagine-meta-personalizzata per recuperarne il sorgente? Grazie :)
AGGIORNAMENTO Ecco cosa ho fatto finora.
<?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 } ?>
Sostanzialmente, vorrei ottenere l'ID per le mie immagini post_meta in modo simile all'approccio usato per le thumbnail.

Custom Meta Image? Cos'è?
Intendi forse che,
stai inserendo un'immagine in un campo personalizzato (post meta field) all'interno del tuo meta box?
stai inserendo un'immagine come allegato o miniatura del post?
Queste sono due cose molto diverse, una delle quali riguarda,
add_post_meta
l'altra,
wp_insert_attachment
Quest'ultimo inserisce gli allegati nella tua libreria media che è associata alla tabella del database wp_posts
.
D'altra parte, i post meta (cioè add_post_meta
ecc.) sono associati alla tabella del database wp_postmeta'
.
Gli allegati sono in realtà classificati come un post_type
proprio come post
, page
o il tuo custom_post_type
per esempio.
Gli allegati, come tipo di post, possono o meno essere associati all'ID di un Post, memorizzato come intero nella colonna post_parent
nella tua tabella wp_posts
. Se impostato su 0
, significa che l'allegato non ha un genitore e non è associato a nessun post specifico.
Mettendo da parte la teoria...
Potresti benissimo star cercando di accedere a un allegato che semplicemente non esiste in primo luogo.
$attachment_id = 20; //ID di esempio dell'allegato che vuoi recuperare
$attachment = wp_get_attachment_image_src( $attachment_id );
echo $attachment[0];
Il codice specifico qui sopra è utile per recuperare un allegato che non è associato a nessun post particolare.
$post_id = 100; //ID di esempio del post
$attachment = wp_get_attachment_thumb_url( $post_id );
echo $attachment; //restituisce l'URL dell'immagine allegata al post
Dove invece recuperare un valore, indipendentemente da quale sia quel valore, quando si ha a che fare con i post meta (come hai riferito come custom meta image) richiede l'uso di,
get_post_meta
In uso,
$post_id = get_the_ID();
$meta = get_post_meta($post_id, 'your_meta_key');
echo $meta;
Riferimenti 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
AGGIORNAMENTO
Basandoti sul tuo codice,
$portfolio_image_one = get_post_meta( $post->ID, '_cmb_portfolio_image_one', true );
Il valore post_meta è contenuto nella tua variabile,
$portfolio_image_one
Quello che devi fare è,
echo $portfolio_image_one;
Altrimenti non succederà nulla.
Se c'è un valore memorizzato per il meta_key
cioè _cmb_portfolio_image_one
allora facendo echo del risultato della variabile, ti verrà presentato il tuo meta_value
qualunque sia quel valore, come http://domain.com/my_image.jpg
per esempio.
Se $post->ID viene usato al di fuori del loop avrai problemi, quindi riferisciti al mio esempio precedente, ma con il tuo codice,
$post_id = get_the_ID();
$portfolio_image_one = get_post_meta($post_id, '_cmb_portfolio_image_one', true);
echo $portfolio_image_one;

Grazie per la risposta dettagliata, purtroppo non risponde alla mia domanda. Aggiornerò il mio post per mostrarti con cosa sto lavorando.
