get_post_meta restituisce solo Array

25 mag 2012, 00:49:41
Visualizzazioni: 28.5K
Voti: 1

Ecco cosa sto cercando di fare:

Sto cercando di far sì che una pagina in WordPress estragga dati dai campi personalizzati di altre pagine. In modo che quando un utente crea una pagina e utilizza un particolare campo personalizzato (in questo caso multiedit_Info), questo venga popolato nella pagina "target".

Ecco il codice con cui sto lavorando:

<?php $item = get_post_meta($post->ID, 'multiedit_Info', false); ?>
<div id="info-col">
<?php echo $item; ?>
</div>

Attualmente sto utilizzando un plugin che crea blocchi di contenuto utilizzando campi personalizzati. E voglio fare in modo che un utente possa semplicemente creare una nuova pagina con i campi personalizzati e poi visualizzarli in un array su un'altra pagina.

Non sono sicuro se lo sto impostando correttamente o meno. È la prima volta che lo uso quindi ogni aiuto è apprezzato. Grazie!

1
Commenti

È un array vuoto? Aggiornamento: Invece di echo, prova <?php print_r( $item ); ?> per vedere.

getWeberForStackExchange getWeberForStackExchange
25 mag 2012 00:53:56
Tutte le risposte alla domanda 2
5

Quando imposti il terzo parametro di get_post_meta() a false, restituisce un array con tutti i valori associati a quella chiave - impostando questo parametro a true restituisce un singolo valore.

Quindi il tuo codice è corretto. Otterresti esattamente la stessa cosa se facessi qualcosa come questo:

$test = array( "1", "2", "3" );
echo $test; // stampa "Array"

Se vuoi visualizzare il contenuto del tuo array, dovrai usare print_r():

$item = get_post_meta( $post->ID, 'multiedit_Info', false );
echo print_r( $item );

Se facessi questo con l'array $test del mio esempio precedente, vedresti:

Array
(
    [0] => "1"
    [1] => "2"
    [2] => "3"
)
25 mag 2012 00:55:43
Commenti

Ok, se lo cambio in questo modo:

<?php $item = get_post_meta($post->ID, 'multiedit_Info', false); ?> <div id="info-col"> <?php print_r( $item ); ?> </div>

Restituisce questo:

Array ( [0] => )

ultraloveninja ultraloveninja
25 mag 2012 01:13:31

OK, significa che hai un array vuoto. Non c'è nulla memorizzato in quella meta chiave per quell'ID del post.

EAMann EAMann
25 mag 2012 01:49:17

Quindi, questo funzionerà per TUTTI i campi personalizzati all'interno delle pagine o solo per quello? Sto cercando di ottenere TUTTI o QUALSIASI dei campi personalizzati con quelle meta informazioni.

ultraloveninja ultraloveninja
25 mag 2012 02:31:01

get_post_meta() recupera solo le informazioni meta per un singolo post/pagina. Non sono del tutto sicuro di cosa stai cercando di ottenere ora, e non è molto chiaro nella tua domanda. Puoi per favore modificare la tua domanda per aggiungere qualche chiarimento? Non limitarti a elencare ciò che hai provato, spiega in dettaglio cosa stai cercando di ottenere.

EAMann EAMann
25 mag 2012 02:39:12

Ok, ho modificato la mia domanda. Spero che questo possa aiutare un po'.

ultraloveninja ultraloveninja
25 mag 2012 04:05:31
0

Ok, ho trovato la soluzione che cercavo qui:

ottenere tutti i valori per una chiave di campo personalizzato (cross-post).

Utilizzando la funzione elencata nel post sopra citato e poi richiamando le informazioni nel mio template con questo codice:

<?php $my_info = get_meta_values( 'multiedit_Info', 'page' ); ?>

e poi visualizzandoli con un foreach:

<?php foreach ( $my_var as $item) :
echo "<p>$item</p>";
endforeach; ?>

Ho raccolto tutti i campi personalizzati in tutte le pagine che li utilizzano e poi li ho visualizzati in una singola pagina.

Grazie per l'aiuto!

25 mag 2012 18:48:11