0

投稿IDの最新コメントの日付gmtを取得したいと思います。文字列として取得したい結果。

誰かが結果を文字列に設定する方法を手伝ってもらえますか:

function GetLastCommentDate( $postId ) {
        global $wpdb;
        $dateOutput = '0000-00-00 00:00:00';

        $commentRes= $wpdb->get_results("SELECT DISTINCT `comment_date_gmt` FROM `wp_comments` WHERE `comment_approved` ='1' AND `comment_post_ID` = '". $postId. "' ORDER BY `comment_date_gmt` DESC LIMIT 1");
        if(!empty($commentRes)) {
            $dateOutput =  ...........
        }
        return $dateOutput;
    }

1つの答えは次のとおりです。

$commentRes= $wpdb->get_results("SELECT DISTINCT `comment_date_gmt` as `comment_date_gmt` FROM `wp_comments` WHERE `comment_approved` ='1' AND `comment_post_ID` = '". $postId. "' ORDER BY `comment_date_gmt` DESC LIMIT 1");
        if(!empty($commentRes)) {
            foreach($commentRes as $comment) {
                $dateOutput=$comment->comment_date_gmt;
            }
        }
        return $dateOutput;

しかし、foreach ループを回避するにはどうすればよいでしょうか。行は 1 つだけです (SQL 制限を 1 に設定)。

4

3 に答える 3

1

wordpress データベースに直接クエリを実行する必要はありません。WP はこれを取得するための API を提供します。

 $comments = get_comments( array(
    'post_id' => $post->ID,
    'orderby' => 'comment_date_gmt',
    'status' => 'approve', 
    'number' => 1 
  ) );

このAPI リファレンスを確認してください。number を 1 に指定すると、最後のコメントのみが返されます。

最後のコメントの日付値は $comments[0]['date'] として取得できます

これを外部から使用したいので、php コードの先頭に以下を含めます。

require('/the/path/to/your/wp-blog-header.php');

このワードプレス文書をチェックしてください

ループ外エラーが発生した場合は、このコードを追加してみてください。

ループはここから始まります:

<?php if ( have_posts() ) : while ( have_posts() ) : the_post(); ?>

そしてここで終わります:

<?php endwhile; else: ?>
 <p><?php _e('Sorry, no posts matched your criteria.'); ?></p>
<?php endif; ?>
于 2013-07-09T15:02:27.360 に答える
0

このようなものが欲しいと思います。

$commentRes= $wpdb->get_row(
      "SELECT `comment_date_gmt` FROM `wp_comments` ".
      "WHERE `comment_approved` ='1' AND `comment_post_ID` = '$postId' ".
      "ORDER BY `comment_date_gmt` DESC LIMIT 1");

if(!empty($commentRes))
    $dateOutput = date("Y-m-d H:i:s", $commentRes->comment_date_gmt);
于 2013-07-09T15:04:57.763 に答える