¿Cómo obtener la fecha de publicación de la publicación fuera del ciclo?

8

Necesito extraer la fecha de publicación de la publicación para que caduque automáticamente. La cuestión es que no puedo obtener la fecha de publicación correcta.

Aquí está mi código:

 global $wpdb;

$post_ids = $wpdb->get_results( "SELECT ID FROM $wpdb->posts WHERE post_status ='publish'" );

foreach($post_ids as $id){

      $postdate = get_the_date("Y-m-d",$id ); //here is what I can figure out
       .......
      ......etc
}

Cuando hago eco de la fecha posterior $, sale con una fecha incorrecta. No es la fecha que existe en la tabla wp_posts.

¿Cómo puedo obtener la fecha correctamente?

dev-jim
fuente

Respuestas:

15

get_the_datedebe usarse dentro del Loop. Para uso fuera del circuito get_the_time.

$posts = get_posts(array('numberposts'=>-1)); //Get all published posts
foreach ($posts as $post){
    echo get_the_time('Y-m-d', $post->ID); //Echos date in Y-m-d format.
}

Considere reemplazar 'Y-m-d'en este ejemplo con, get_option('date_format')ya que esto mostrará la fecha según su configuración de formato de fecha en wp-admin.

Stephen Harris
fuente
Intenté get_the_time también, pero todavía me da la fecha incorrecta.
dev-jim
1
¿Y le das el ID de la publicación? get_the_timees la función correcta para usar aquí.
Stephen Harris
1
Además, no debería usar una consulta SQL personalizada aquí. Use get_postsy luego, si desea extraer solo las ID, usewp_list_pluck
Stephen Harris
Estoy haciendo algo para actualizar post_status en función de la fecha de publicación, ¿hay alguna otra forma de actualizar el estado? Hasta ahora, la consulta SQL me parece la forma más fácil.
dev-jim
1
@DavidHobs Fixed :)
Stephen Harris
1

Algunas almas modernas

Solución uno

<?php echo get_the_date('j F Y', get_the_ID()) ?>

Solución dos

<?php the_time(get_option('date_format')) ?>
Osama Elzero
fuente
0

Puede usar get_post () o get_post_field () para esto, ambos trabajan fuera del ciclo.

$post_object = get_post($id);
$post_date = date( 'F jS, Y', strtotime( $post_object->post_date ) );

Una lista completa de valores devueltos por get_post:

WP_Post Object
(
    [ID] =>
    [post_author] =>
    [post_date] => 
    [post_date_gmt] => 
    [post_content] => 
    [post_title] => 
    [post_excerpt] => 
    [post_status] =>
    [comment_status] =>
    [ping_status] => 
    [post_password] => 
    [post_name] =>
    [to_ping] => 
    [pinged] => 
    [post_modified] => 
    [post_modified_gmt] =>
    [post_content_filtered] => 
    [post_parent] => 
    [guid] => 
    [menu_order] =>
    [post_type] =>
    [post_mime_type] => 
    [comment_count] =>
    [filter] =>
)
Uriahs Victor
fuente
-2

intenta así

$getPosts = $wpdb->get_results( 
"
    SELECT ID, post_date,post_title
    FROM $wpdb->posts
    WHERE post_status = 'publish' 
        AND post_type = 'post'
        ORDER BY ID ASC
    "
);

foreach ( $getPosts as $myPost ) {
    $id = $myPost->post_date;
    echo $myPost->ID.' | '. $myPost->post_title.' | '. get_the_date("Y-m-d",$id ).'<br />';
}

editar

get_the_time Devuelve la hora de la publicación actual para su uso en PHP. No muestra la hora. Para mostrar la hora de una publicación, use the_time (). Esta etiqueta debe usarse dentro de The Loop.

get_the_date La etiqueta de plantilla get_the_date recupera la fecha en que se escribió el $ post actual. A diferencia de the_date (), esta etiqueta siempre devolverá la fecha. Modifique la salida con el filtro 'get_the_date'.

¿Me estoy perdiendo de algo?

Gembel Intelek
fuente
Por favor, combine sus respuestas.
fuxia
muéstrame cómo fusionar, por favor?
Gembel Intelek
Edite la primera respuesta y copie el código de la segunda. Luego borra el segundo.
fuxia
Probé sus códigos y puedo obtener el valor de get_the_time, no get_the_date.
dev-jim