2011-11-04 24 views
9

que he creado un tipo de mensaje personalizado. Se cargará muy bien en el tablero de Wordpress y también podré guardarlo. Ahora digamos que es un tipo de publicación personalizada que contiene datos para algunas cadenas y algunas fechas.cómo mostrar los datos personalizados de tipos de envíos personalizados

Quiero poder recuperar estos tipos de publicaciones personalizadas (que he hecho usando WP_Query y especificando el tipo de publicación para el nombre de mi tipo de publicación personalizada). Cuando llamo print_r al objeto devuelto, en ninguna parte del objeto se almacenan los datos personalizados (cadenas y fechas). ¿Cómo puedo recuperarlos de la base de datos?

He mirado por horas y no he encontrado ninguna aproximación a la recuperación de estos datos.

lo solicitado: Se trata de cómo se almacenan los datos:

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"]); 
} 

Esta función está ligada al gancho 'save_post'. Los datos se volverán a mostrar cuando vuelva a abrir la instancia de tipo de publicación personalizada en el modo de edición. Eso significa que está almacenado en la base de datos, ¿verdad?

+0

Por favor, añadir un poco de código. ¿Cómo se almacenan los metadatos adicionales? –

+0

agregó el código según lo solicitado. – Prusprus

Respuesta

9

Si los metadatos aparece al editar mensajes del tipo, entonces sí, que debe haber sido almacenado con éxito en la base de datos.

Hay dos funciones de wp para recuperar los metadatos del tipo de mensaje personalizado: get_post_custom_values y get_post_meta. La diferencia es que get_post_custom_values puede acceder a campos personalizados no únicos, es decir, aquellos con más de un valor asociado con una sola clave. Sin embargo, también puede elegir usarlo para campos únicos: cuestión de gusto.

Suponiendo que el tipo de mensaje se llama "obituario":

// 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 palabra de precaución, para evitar confusiones: Dejando de lado el booleano en get_post_meta hará devolver una matriz en lugar de una cadena. get_post_custom_values siempre devuelve una matriz, por lo que, en el ejemplo anterior, nos estamos haciendo eco de la $birth_date[0], en lugar de $birth_date.

Además no estoy 100% seguro en este momento, si $post->ID funcionará como se espera en lo anterior. Si no, reemplázalo con get_the_ID(). Ambos deberían funcionar, uno lo hará con seguridad. Podría probar eso, pero ahorrándome el tiempo ...

Para mayor información, consulte el codex en WP_Query para obtener más argumentos de consulta y uso correcto.

+0

¡Gracias! ¡Esto es genial! Espero que otros como yo pegado tratando de encontrar información caerá en esta página :) – Prusprus

+0

¡Agradable! Tenía curiosidad de cómo hacer esto yo mismo, muy útil respuesta – Alex

+0

Sorprendido de obtener un comentario sobre una respuesta que data de hace más de 5 años. Sin embargo, leyéndolo otra vez, esta parte de la API de WP no cambió mucho, esta información sigue siendo cierta. –

Cuestiones relacionadas