¿Cómo obtener la fecha de creación de una entrada?
¿Supongo que hay que obtener la primera revisión de una entrada en particular y obtener su fecha, verdad?
¿Cómo se hace eso?

El post_date
y post_date_gmt
sirven como la fecha en que se creó la publicación. Para las publicaciones programadas, esta será la fecha en la que está programada su publicación.
No existe un método nativo confiable para determinar la fecha en que se agregó una publicación programada. Para publicaciones programadas, puedes intentar usar las fechas post_modified
o post_modified_gmt
, ya que corresponderán al momento en que se agregó la publicación por primera vez. Sin embargo, hay que recordar que esto no es confiable, ya que esta fecha cambiará cuando la publicación sea modificada.
Otro método (también poco confiable) es utilizar revisiones. Si tienes las revisiones habilitadas, cuando una publicación se programa o se publica, se guarda una revisión. Esa revisión, que se guardará después de programar la publicación cuando se haga clic en el botón de programar, contendrá la fecha actual en la que se hizo clic en el botón. Mira la imagen a continuación:
Si necesitas una forma confiable de hacer esto, deberás escribir tu propia función personalizada para guardar el momento exacto en que se hace clic en el botón de programar una publicación.

No creo que el caso sea muy aislado, especialmente ahora que woocommerce está en escena y quieres diferenciar entre la antigüedad de los productos

Necesitaba la misma información y lo resolví por mi cuenta. Debes hacer una consulta personalizada para obtener el primer _wp_old_date
de la tabla postmeta
como sugirió @dipak_pusti. Ejecuta la siguiente sentencia:
global $wpdb;
$post_id = 1234;
$meta_key = '_wp_old_date';
$post_create_date = $wpdb->get_var( $wpdb->prepare(
"
SELECT MIN($wpdb->postmeta.meta_value) as post_create_date
FROM $wpdb->postmeta
WHERE $wpdb->postmeta.post_id = %d
AND $wpdb->postmeta.meta_key = %s
",
$post_id,
$meta_key
) );
if(is_null($post_create_date)) {
$post_create_date = get_the_date('Y-m-d', $post_id);
}
echo "<p>La fecha de creación del post es: {$post_create_date}</p>";
Nota: Si _wp_old_date
es NULL
(esto significa que la fecha de publicación nunca ha cambiado) puedes usar la fecha de get_the_date('Y-m-d', $post_id)
.

Creo que esto se puede simplificar llamando a get_post_meta( $post_id, '_wp_old_date' );
, asegurándonos de no pasar un valor true
como tercer parámetro. El resultado será un array de valores a verificar, evitando la necesidad de una consulta SQL. Como ventaja adicional, utiliza WP Cache, por lo que si ya tienes un objeto post, no se realizan consultas en absoluto.

Utiliza get_the_date();
para obtener la fecha definida en la caja meta "Publicar" en el campo "Publicado el...", esta generalmente es la fecha en que el usuario creó la publicación a menos que él/ella la haya cambiado.

Cuando me encontré con un caso similar al tuyo, descubrí una meta clave _wp_old_date
con un valor meta que representaba una fecha.
Al buscar esto en Google, encontré que se utiliza una función para almacenar el valor antiguo cuando se modifica una Entrada u Objeto.
https://wpseek.com/function/wp_check_for_changed_dates/
Sé que esta es una respuesta muy tardía, pero puede ayudar a otros en el futuro. :)

He escrito una consulta basada en las otras respuestas.
SELECT p.post_title,
(SELECT Min(postmeta.meta_value)
FROM wp_postmeta postmeta
WHERE postmeta.post_id = p.id
AND postmeta.meta_key = '_wp_old_date')
"Primera publicación desde postmeta",
DATE(revisions.min_post_modified)
"Primera edición encontrada en revisiones",
DATE(revisions.min_post_date) min_post_date
FROM wp_posts p,
(SELECT post_parent,
Min(pr.post_modified) min_post_modified,
Min(pr.post_date) min_post_date
FROM wp_posts pr
GROUP BY pr.post_parent) revisions
WHERE p.id = revisions.post_parent
