2011-11-04 16 views
9

Ho creato un tipo di post personalizzato. Verrà caricato correttamente nel dashboard di Wordpress e potrò salvarlo anche. Ora diciamo che è un tipo di post personalizzato che contiene dati per poche stringhe e alcune date.come visualizzare i dati personalizzati da tipi di post personalizzati

Voglio essere in grado di recuperare questi tipi di post personalizzati (che ho fatto usando WP_Query e specificando il post_type al nome del mio tipo di post personalizzato). Quando chiamo print_r sull'oggetto restituito, da nessuna parte nell'oggetto sono memorizzati i dati personalizzati (stringhe e date). Come posso recuperarli dal database?

Mi sono guardato intorno per ore e non ho trovato alcun approccio per recuperare questi dati.

Come richiesto: Questo è come i dati vengono memorizzati:

function update_obituary(){ 
    global $post; 
    update_post_meta($post->ID, "first_name", $_POST["first_name"]); 
    update_post_meta($post->ID, "last_name", $_POST["last_name"]); 
    update_post_meta($post->ID, "birth_date", $_POST["birth_date"]); 
    update_post_meta($post->ID, "death_date", $_POST["death_date"]); 
    update_post_meta($post->ID, "publication_date", $_POST["publication_date"]); 
} 

Questa funzione è legata al gancio 'save_post'. I dati verranno visualizzati di nuovo quando riaprirò l'istanza del tipo di post personalizzato in modalità di modifica. Ciò significa che è memorizzato nel database, giusto?

+0

Si prega di aggiungere un po 'di codice. Come vengono memorizzati i metadati extra? –

+0

aggiunto il codice come richiesto. – Prusprus

risposta

9

Se i metadati vengono visualizzati quando si modificano i post del tipo, allora sì, deve essere stato memorizzato correttamente nel DB.

Sono disponibili due funzioni wp per recuperare i metadati del tipo di post personalizzato: get_post_custom_values e get_post_meta. Con la differenza che get_post_custom_values può accedere a campi personalizzati non univoci, ovvero quelli con più di un valore associato a una singola chiave. Puoi anche scegliere di usarlo per campi unici anche se - domanda di gusto.

Supponendo che il tipo di posto si chiama "necrologio":

// First lets set some arguments for the query: 
// Optionally, those could of course go directly into the query, 
// especially, if you have no others but post type. 
$args = array(
    'post_type' => 'obituary', 
    'posts_per_page' => 5 
    // Several more arguments could go here. Last one without a comma. 
); 

// Query the posts: 
$obituary_query = new WP_Query($args); 

// Loop through the obituaries: 
while ($obituary_query->have_posts()) : $obituary_query->the_post(); 
    // Echo some markup 
    echo '<p>'; 
    // As with regular posts, you can use all normal display functions, such as 
    the_title(); 
    // Within the loop, you can access custom fields like so: 
    echo get_post_meta($post->ID, 'birth_date', true); 
    // Or like so: 
    $birth_date = get_post_custom_values('birth_date'); 
    echo $birth_date[0]; 
    echo '</p>'; // Markup closing tags. 
endwhile; 

// Reset Post Data 
wp_reset_postdata(); 

Una parola di cautela, per evitare confusione: Tralasciando il booleano in get_post_meta renderà restituire una matrice piuttosto che una stringa. get_post_custom_values restituisce sempre un array, motivo per cui, nell'esempio precedente, stiamo riproducendo lo $birth_date[0] anziché $birth_date.

Inoltre, al momento non sono sicuro al 100%, se $post->ID funzionerà come previsto in precedenza. In caso contrario, sostituirlo con get_the_ID(). Entrambi dovrebbero funzionare, uno sarà sicuro. Potrebbe testarlo, ma risparmiando il tempo ...

Per motivi di completezza, controllare il codice su WP_Query per ulteriori argomenti di query e uso corretto.

+0

Grazie! È fantastico! Spero che altri come me bloccati cercando di trovare informazioni cadrà su questa pagina :) – Prusprus

+0

Bello! Era curioso di farlo da solo, molto utile risposta – Alex

+0

Sorpreso di avere un commento su una risposta risalente a più di 5 anni fa. Leggendolo ancora una volta, questa parte dell'API di WP non è cambiata molto: questa informazione è ancora valida. –

Problemi correlati