COMMENT_DATE()和COMMENT_TIME()不在函数中工作。php

时间:2013-07-24 作者:Vigs

我使用以下功能获取每个帖子的最新评论,并将其显示在帖子内容下的存档和索引页面上:

function kv_latest_comment($post){
         $args = array(
            \'status\' => \'approve\',
            \'number\' => \'1\',
            \'post_id\' => $post->ID, // use post_id, not post_ID
              );
            $comments = get_comments( $args );
        if($comments){
        foreach($comments as $comment) :
        if($comment->comment_type != \'pingback\' and $comment->comment_type != \'trackback\') : ?>
        <div class="comment">
           <div class="comment-avatar"><?php echo get_avatar($comment,$size=\'64\'); ?></div><!-- comment-avatar -->
           <div class="comment-right">
           <div class="comment-bubble comment-bubble-left">
           <div class="comment-header">
              <a href="<?php echo site_url().\'/author/\'.get_the_author_meta( \'user_login\'); ?>" title=""><?php printf(__(\'%s\'), get_the_author_meta( \'user_login\')) ?></a> on <?php printf(__(\'%1$s at %2$s\'), get_comment_date(),  get_comment_time()) ?><?php edit_comment_link(__(\'(Edit)\'),\'  \',\'\') ?>
           </div><!-- comment-header -->
           <div class="comment-content">
              <?php echo($comment->comment_content); ?>
           </div><!-- comment-content -->
           </div><!-- comment-bubble -->
           </div><!-- comment-right -->
           <div class="clear"></div>
        </div><!-- comment -->
<?php
        endif;
        endforeach; }
}
我在帖子模板中这样调用函数:

<?php kv_latest_comment($post); ?>
从函数调用函数时。php comment\\u date()和comment\\u time()不返回任何内容。

但如果我将函数中的代码粘贴到模板中,它将按预期工作。。。

为什么函数在从函数调用时不返回任何值。php?

3 个回复
最合适的回答,由SO网友:Eric Holmes 整理而成

get_comment_date 需要注释id作为第二个参数。如果您不提供此服务,它将向全球$comment 变量,在使用WP\\U查询->the\\u comment()时设置。也许可以考虑将循环更改为WP\\U查询,或者get_comment_date( \'\', $comment->ID )

SO网友:Pontus Abrahamsson

因为您没有传递post对象,所以在模板上$post, 但如果从函数运行函数。php文件您没有$post。您可以添加global $post; 对于这样的函数:

function kv_latest_comment($post) {
    global $post;
    // code
}

SO网友:aileen

哈哈,我也有类似的问题。最后要弄清楚这一点:

$aa = get_comments( array( \'post_id\' => 27 ) );

foreach ($aa as $comment):

echo comment_time( \'H:i:s\' );

endforeach;
最重要的关键部分是$comment是一个全局变量,我将其覆盖到其中。起初,我认为这只是将注释数组分割成单独的注释,以便我可以将该变量命名为$bb或其他任何名称。这是错误的,只有当它是$comment时,所有应用于当前注释的函数都有效。:)

结束