web-dev-qa-db-ja.com

最後の更新日をループ外で取得

ループの外で投稿が最後に更新された日付を表示する方法を見つけようとしています。私はget_the_time()を使って公開された日付を表示することができますが、最後の更新の日付を取得するための "loopless"関数はないようです。

誰もがこれをするのが辛いことを知っていますか?

3
Eckstein

最終更新の投稿を探しているのか、特定の投稿の最終更新日を探しているのかは不明です。 @PatJによる回答は前者を想定しています。後者を行うには:

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

それとも….

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

もちろん、あなたが探している投稿と一致するように投稿IDを変更する必要があります。

4
s_ha_dum

get_the_time() のCodexページによると、The Loopで使用する必要があります。 the_time()get_the_time() の違いは、前者の echo() は日付を表し、後者はそれを返すということです。

私が探していると思うことをする2つの関数があります - 投稿の最終更新日時を取得する: get_the_modified_time()get_the_modified_date()The Loop で使う必要があるようです。

これはあなたのサイトの最新の投稿の更新日を取得する一つの方法です:

<?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." );
?>

ループの外にいる必要があると確信している場合は、常に $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

最近追加されましたが、次のスニペットはループの外側のほとんどの関数を使用するように変更できます。

/**
 * 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

前回の回答からは明らかではないかもしれませんが、get_post_time()とget_post_modified_time()には投稿オブジェクトまたは投稿IDを指定できます。そのため、ループの外側で投稿IDで公開日と修正日を取得するには、次のようにします。

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

js。

誰かが見ているかどうかを知るのに役立つかもしれません。これら2つの関数を使用して、投稿日と変更日をループの外に取得できます。

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

そして

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

あなたはコーデックスでこれら二つの関数についてもっと読むことができます。

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

1
Johan

get_lastpostmodified( $timezone ) 関数はどうですか?

0
user2412827