Cómo Mostrar la fecha real post en un proyecto

Cuando se mira en un post del proyecto,
get_the_date()
Sólo parece volver a fecha de hoy, no la fecha del post, aunque he seleccionado otra fecha en la pantalla de editar el post. ¿Hay una manera de Mostrar la fecha post 'real', que el que he seleccionado? Lo veo en la base de datos MySQL que está guardado en la columna post_date. Pero, al igual que get_the_date,
$post->post_date
No devolverlo.

Si el poste es un borrador, que muestra la fecha y hora actuales..


Solución 1

Sí, ya que hasta ahora no tiene ninguna fecha de publicación. Puede utilizar
$post->post_modified
, que siempre será la fecha de la última modificación de los datos post. Depuración: Trata de enganche en el filtro y dejar ambos vars:
function date_dump_callback( $date, $d )
{
    echo '<pre>'; print_r( $date ); print_r( $d ); echo '</pre>';
    return $date;
}
add_filter( 'get_the_date', 'date_dump_callback', 20, 2 );
function date_dump_callback( $date, $d )
{
    echo '<pre>'; print_r( $date ); print_r( $d ); echo '</pre>';
    return $date;
}
add_filter( 'get_the_date', 'date_dump_callback', 20, 2 );
.

Solución 2

No sé por qué está modificando los datos así cuando se muestra, pero puede utilizar
$post->post_date_gmt
Esto devolverá la fecha programada el post igual está en la DB menos que está en el formato de hora GMT, así que necesitarías convertir la hora a su zona horaria local primero (this blog post may help). En caso contrario, podrás usarlo como si estás usando la fecha y no es el momento, pero depende de lo que estás haciendo con él. Editar 29/02/12: quería explicar mi respuesta para hacerlo más completo y dar algo realmente puede utilizar.

Tienes razón, la fecha de correo está almacenada en el
post_date
campo en la base de datos. Por ejemplo, wordpress utiliza esta línea de código en
wp-admin/includes/meta-boxes.php
para definir la variable que se utiliza para mostrar la fecha de los post para proyectos programados para el futuro:
$date = date_i18n( $datef, strtotime( $post->post_date ) );
Sin embargo, cuando se utiliza el mismo código para su visualización en la parte delantera, devuelve la hora actual como dijiste.

Creo que podemos concluir que el
$post
datos de objeto se prepara diferente para el front-end. de todos modos, es posible salida de la misma fecha que se ha configurado en el admin.

Porque parece que no podemos usar
$post->post_date
, podemos utilizar
$post->post_date_gmt
como he dicho antes el único inconveniente es su zona horaria probablemente no sea igual a GMT. Así que todo lo que necesitas hacer es tirar el valor GMT y convertirlo en su zona horaria.

Usted puede agregar esta función a su
functions.php
y dondequiera que usted quiere:
<?php
/**
*@param string $datef (optional) to pass the format you want for the returned date string
*@return string
*/
function get_the_real_post_date($datef = 'M j, Y @ G:i') {

    global $post;

    if ( !empty( $timezone_string = get_option( 'timezone_string' ) ) )  {

        $timezone_object = timezone_open( $timezone_string );
        $datetime_object = date_create( $post->post_date_gmt );

        $offset_sec = round( timezone_offset_get( $timezone_object, $datetime_object ) );
        // if you want $offset_hrs = round( $offset_sec / 3600 );

        return date_i18n( $datef, strtotime( $post->post_date_gmt ) + $offset_sec );

    } elseif (!empty( $offset_hrs = get_option('gmt_offset') ) ) {

        // this option shows empty for me so I believe it's only used by WP pre 3.0
        // the option stores an integer value for the time offset in hours

        $offset_sec = $offset_hrs * 3600;
        return date_i18n( $datef, strtotime( $post->post_date_gmt ) + $offset_sec );

    } else {

        return;  // shouldn't happen but...

    }
}
Por supuesto también puedes cambiar el formato predeterminado definido en la definición del parámetro si hay un formato especial que utilizaría al máximo. Déjame saber si esto funciona para ti.

Tengo curiosidad, ¿qué estás usando la fecha de?.

Solución 3

Puede generar la fecha prevista para la entrada de un proyecto mediante la lectura de la base de datos utilizando la clase wpdb mediante la variable global $wpdb proporcionada por Worpdress (ver http://codex.wordpress.org/Class_Reference/wpdb ). Añadir esto a tu functions.php:
// function to get scheduled date for draft post
function unpublished_draft_date(){
  global $wpdb; global $post;
  $post_id = $post->ID;
  $draft_date_array = $wpdb->get_results( 'SELECT post_date FROM wp_posts WHERE ID = '.$post_id );
  $draft_date = $draft_date_array[0]->post_date;
  return $draft_date;
}
Y esto dentro de su puesto de bucle:
echo unpublished_draft_date();
I proporciona sólo el código básico para obtener la fecha que querías. Es fácil formar la fecha si usted necesita y un id de mensaje a la función si no quieres usar actual post id o desea utilizar la función fuera del bucle de entrada.

Por favor comenten abajo si necesita instrucciones más específicas..

Solución 4

En mis borradores, $post > post_date_gmt es 0000 00 00 00:00:00 – supertrue Jun 4 at 15:08 No hay ninguna manera de modificar la fecha de publicación de un proyecto que todavía no ha sido publicado. El valor de post_date_gmt será 0000 00 00 00:00:00 hasta que se publica el post. Asegúrese de que el post ha sido publicado por lo menos una vez.

Visibilidad puede establecerse en privado si no quieres que se publique públicamente. Una vez que se publique, puede editar la fecha y lo que debe guardar como el valor para post_date y post_date_gmt indefinidamente a menos que usted cambiarlo otra vez.

Los valores post_modified y post_modified_gmt continuará a cambiar en cualquier momento modificar el post. He probado esto y post_date_gmt se establecerá en la fecha y hora actuales al publicar el post con visibilidad establecida en privado.

También puede editar la fecha en este momento y debe ser actualizado. Si usted puede modificar y guardar una fecha en la pantalla de edición de un proyecto (que puede) – supertrue Feb 29 '12 at 1:36 No, no puedes modificar y guardar una fecha en la pantalla de edición de un proyecto.

Antes de publicar un borrador, esta misma zona de la metabox 'Publicar' en el puesto de editor se utiliza para programar una cita para el puesto que se publicará en el futuro. Por supuesto usted no será capaz de establecer una fecha pasada o para planificar el futura fecha y probablemente no sea para post_date_gmt hasta que realmente se publica..





Problemas relacionados

WordPress malo Mostrar la fecha y hora de php

pantalla último mensaje modificado fecha en temas de niño Génesis

¿Cómo mostrar post solamente de después de la fecha de encargo

Si modifica el mismo día, Mostrar sólo el tiempo

¿Cómo Mostrar última fecha post en la página?

Fecha de última actualización fuera del bucle

¿Actualizar el post fecha de página al visitante acceder a esa página?

¿Mostrar fecha de registro de comentarista en comentarios?

Pantalla personalizada mensaxe tipos de campo de fecha

Actualizar automáticamente post fecha a fecha de modificación

Cómo conseguir el post publicar fecha fuera del bucle.

Fecha comparación: formato fecha.

Source: Stack Exchange Inc; License: cc by-sa 3.0 Contacto / Contact