web-dev-qa-db-fra.com

Obtenir la date de la dernière mise à jour en dehors de la boucle

J'essaie de comprendre comment afficher la date à laquelle un message a été mis à jour pour la dernière fois en dehors de la boucle. Je peux afficher la date publiée avec get_the_time(), mais il ne semble pas exister de fonction "sans boucle" pour obtenir la date de la dernière mise à jour.

Est-ce que quelqu'un sait chaud pour faire cela?

3
Eckstein

Il est difficile de savoir si vous recherchez le dernier message mis à jour ou la dernière date de mise à jour pour un message particulier. La réponse de @PatJ suppose l'ancien. Pour faire ce dernier:

$qry = new WP_Query(array('p'=>1));
var_dump($qry->posts[0]->post_modified);

Ou...

$date = $wpdb->get_var("SELECT post_modified FROM {$wpdb->posts} WHERE ID = 1");
var_dump($date);

Bien entendu, vous devez modifier l'ID de l'article pour qu'il corresponde à celui que vous recherchez.

4
s_ha_dum

Selon la page du Codex pour get_the_time() , il doit être utilisé dans The Loop. La différence entre the_time() et get_the_time() est que l'ancien echo() es est la date et que ce dernier la renvoie.

Il y a quelques fonctions qui font ce que je pense que vous cherchez - obtenir la date et l'heure de la dernière mise à jour pour un message: get_the_modified_time() et get_the_modified_date() . Il semble qu’ils doivent également être utilisés dans The Loop .

Voici un moyen d'obtenir la date de mise à jour de la publication la plus récente sur votre site:

<?php
     $args = array(
        'orderby'     => 'post_modified',
        'numberposts' => 1,
    );
    $myposts = get_posts( $args );
    if( have_posts() ) {
        while( have_posts() ) {
            the_post();
            $last_update = get_the_modified_date();
        }
    }
    echo( "Last modified on $last_update." );
?>

Si vous êtes sûr de ne pas avoir de boucles, vous pouvez toujours utiliser $wpdb :

<?php
    global $wpdb;
    $sql = "SELECT post_modified
            FROM $wpdb->posts
            WHERE post_type='post'
            AND post_status='publish'
            ORDER BY post_modified DESC
            LIMIT 1";
    $last_update = $wpdb->get_var( $sql );
    echo( "Last updated $last_update." );
?>
6
Pat J

Un ajout tardif, mais l'extrait suivant peut être modifié pour utiliser la plupart des fonctions en dehors de la boucle:

/**
 * Returns a post's modified date, formatted according to $format.
 * @uses the_modified_time()
 *
 * @param int $post_id Post ID.
 * @param string $format Date format Default: "F j, Y".
 */
function wpse95769_modified_date_by_id( $post_id = 0, $format = "F j, Y" ){
    global $post;
    $post = &get_post( $post_id );
    setup_postdata( $post );

    $modified_time = get_the_modified_time( $format );

    wp_reset_postdata( $post );

    return $modified_time;
}
2
Stephen Harris

Cela n’est peut-être pas clair dans les réponses précédentes, mais get_post_time () et get_post_modified_time () peuvent recevoir un objet ou un ID de publication. Donc, pour obtenir les dates publiées et modifiées par ID postal en dehors de la boucle:

$published_time = get_post_time( $date_fmt, null, $post_id );
$modified_time = get_post_modified_time( $date_fmt, null, $post_id );

js.

1

Un autre ajout tardif, qui peut être utile pour savoir si quelqu'un cherche. Vous pouvez utiliser ces deux fonctions pour obtenir la date de publication et la date de modification en dehors de la boucle.

<?php get_post_time( $d, $gmt, $post, $translate ); ?> 

et

<?php get_post_modified_time( $d, $gmt, $post, $translate ); ?>

Vous pouvez en savoir plus sur ces deux fonctions dans le codex.

http://codex.wordpress.org/Template_Tags/get_post_timehttp://codex.wordpress.org/Function_Reference/get_post_modified_time

1
Johan

Qu'en est-il de la fonction get_lastpostmodified( $timezone ) ?

0
user2412827