Obtém a data da última atualização fora do loop

3

Estou tentando descobrir como exibir a data em que uma postagem foi atualizada pela última vez fora do loop. Eu sou capaz de exibir a data publicada usando get_the_time() , mas não parece haver uma função "loopless" para obter a data da última atualização.

Alguém sabe quente para fazer isso?

    
por Eckstein 14.04.2013 / 08:47

6 respostas

4

Não está claro se você está procurando a última postagem atualizada ou a última data atualizada para uma postagem específica. A resposta de @PatJ assume o primeiro. Para fazer o último:

$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);

É claro que você precisa alterar o ID do post para corresponder ao post que está procurando.

    
por s_ha_dum 14.04.2013 / 17:15
5

De acordo com a página do Codex para get_the_time() , ele precisa ser usado no The Loop. A diferença entre the_time() e get_the_time() é que a primeira echo() é a data e a última retorna.

Existem algumas funções que fazem o que eu acho que você está procurando - obtenha a última data e hora atualizadas para uma postagem: get_the_modified_time() e get_the_modified_date() . Parece que eles também precisam ser usados em The Loop .

Aqui está uma maneira de obter a data atualizada da postagem mais recente em seu 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." );
?>

Se tiver certeza de que precisa estar fora de qualquer loop, você sempre pode usar $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." );
?>
    
por Pat J 14.04.2013 / 16:08
2

Uma adição tardia, mas o snippet a seguir pode ser modificado para usar a maioria das funções fora do loop:

/**
 * 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;
}
    
por Stephen Harris 21.09.2013 / 02:33
1

Outra adição tardia, que pode ser útil para saber se alguém está procurando. Você pode usar essas duas funções para obter a data de postagem e a data de modificação fora do loop.

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

e

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

Você pode ler mais sobre essas duas funções no códice.

enlace enlace

    
por Johan 30.01.2014 / 00:32
1

Pode não estar claro nas respostas anteriores, mas get_post_time () e get_post_modified_time () podem receber um objeto post ou um ID de postagem. Assim, para obter as datas publicadas e modificadas por ID do post fora do loop:

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

js.

    
por Jean-Sebastien Morisset 24.12.2015 / 16:39
0

E a função get_lastpostmodified( $timezone ) ?

    
por user2412827 04.02.2014 / 17:26