Come ottenere il sorgente di un'immagine meta personalizzata in WordPress?

27 set 2012, 20:07:48
Visualizzazioni: 14.6K
Voti: 0

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.

2
Commenti

Ciò che conta è ciò che stai memorizzando nel campo personalizzato, non come lo ottieni. È comune memorizzare l'ID per le immagini, ma immagino tu non lo stia facendo. Cosa stai memorizzando nei campi meta?

mrwweb mrwweb
28 set 2012 05:48:59

Non l'ID :), speravo di non doverlo fare manualmente. Ho trovato un paio di modi confrontando i campi di $wpdb. Ma ho anche trovato un modo migliore che non utilizza affatto gli ID. Se trovo un po' di tempo posterò ciò che ho scoperto.

Marc Wiest Marc Wiest
29 set 2012 20:45:29
Tutte le risposte alla domanda 1
2

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

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;
27 set 2012 20:31:44
Commenti

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

Marc Wiest Marc Wiest
27 set 2012 21:28:46

'get_post_meta($post_id, '_cmb_portfolio_image_one', true);' restituisce l'URL completo dell'immagine. Come si può ottenere ad esempio l'URL della dimensione 'medium'?

Ben Ben
14 nov 2016 10:45:01