¿Cómo obtener la fecha de creación de una entrada?

4 feb 2015, 14:33:57
Vistas: 29.6K
Votos: 11

¿Supongo que hay que obtener la primera revisión de una entrada en particular y obtener su fecha, verdad?

¿Cómo se hace eso?

9
Comentarios

Las fechas post_date y post_date_gmt corresponden a la fecha en que se creó la publicación.

Pieter Goosen Pieter Goosen
4 feb 2015 14:41:39

Gracias Pieter, pero parece que ambas me dan la fecha de la última modificación. ¿Estás seguro?

Max Max
4 feb 2015 14:44:22

Entonces tienes un filtro personalizado o una función que está modificando las fechas de tus publicaciones. Si una publicación es modificada, esa fecha y hora específica se guarda como post_modified

Pieter Goosen Pieter Goosen
4 feb 2015 14:46:57

Lo siento, pero creo que esto es incorrecto, al menos para las publicaciones programadas: post_date es la fecha programada. Y no hay un filtro, consulto directamente la base de datos y obtengo la publicación, luego llamo a ->post_date. ¿Alguna idea para obtener la primera vez que la publicación se agregó a WordPress?

Max Max
4 feb 2015 14:58:10

Acabo de probarlo: recupero post_date de una publicación programada, me da la fecha programada. ¿No es lo mismo para ti?

Max Max
4 feb 2015 15:20:33

Creo que encontré lo que necesitaba (aunque no estoy totalmente seguro en este momento): get_the_time( $date_format, $new_post );

Max Max
4 feb 2015 15:45:46

por cierto, no estaba buscando la fecha de publicación, sino la fecha de creación, la primera vez que un usuario creó el post en WordPress

Max Max
4 feb 2015 15:47:35

Ups, no funciona, sigue siendo la fecha de publicación, o programada si el post está programado... ¡Extraño!

Max Max
4 feb 2015 15:55:59

¿Qué has codificado hasta ahora tú mismo? Además, tu pregunta no está clara.

Brad Dalton Brad Dalton
4 feb 2015 20:00:32
Mostrar los 4 comentarios restantes
Todas las respuestas a la pregunta 5
4
10

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:

Visualización de revisión de publicación programada

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.

4 feb 2015 19:55:23
Comentarios

Gracias, pero esto es extraño, no existe tal función

Max Max
27 feb 2015 11:32:17

¿Es realmente necesaria tal función? Tu caso es muy aislado

Pieter Goosen Pieter Goosen
27 feb 2015 11:41:17

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

Kirby Kirby
15 jul 2015 23:05:19

@Kirby por favor explica en una respuesta

Pieter Goosen Pieter Goosen
15 jul 2015 23:34:18
1

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).

25 ene 2019 19:26:44
Comentarios

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.

Tom J Nowell Tom J Nowell
31 oct 2019 00:06:09
0

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.

4 feb 2015 16:59:25
0

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. :)

1 ago 2018 14:45:54
0

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 
31 oct 2019 20:23:26