我正在使用wordpress 3.2,并且做了这样的查询:

<?php query_posts("posts_per_page=1post=type&page=post_parent=10");?>


然后我试着回显我这样查询的帖子日期。

<?php echo the_date(); ?>


它给了我标题的标题,摘要和固定链接,但没有日期。您认为问题是什么?我确定这很令人尴尬。

这是视频页面的模板文件中的代码:

    <?php query_posts("posts_per_page=1post=type&page=post_parent=10");?>
    <h2>Recent Video</h2>
    <h3 class="date"><?php echo the_date(); ?></h3>
    <p><strong><?php echo the_title(); ?></strong><?php echo the_excerpt(); ?></p>
    <p><a href="<?php echo the_permalink(); ?>" class="more2">Watch Now</a></p>


这里我尝试将查询置于循环中:

<?php query_posts("posts_per_page=1post=type&page=post_parent=10");?>
<?php if ( have_posts() ) : while ( have_posts() ) : the_post(); ?>
<h2>Recent Video</h2>
<h3 class="date"><?php echo the_date(); ?></h3>
<p><strong><?php echo the_title(); ?></strong><?php echo the_excerpt(); ?></p>
<p><a href="<?php echo the_permalink(); ?>" class="more2">Watch Now</a></p>
<?php endwhile; else: ?>
<p><?php _e('Sorry, no posts matched your criteria.'); ?></p>
<?php endif; ?>


the_date()不起作用,但是the_title()和其他函数起作用。顺便说一下,这将我的查询更改为the_post(),这不是我想要的。我想查询最新的视频,就像在循环之前一样。

通过我在页面前面使用the_date函数的方式,它可以正常工作。可能是问题所在吗?这是我遇到问题的代码之前。







<div id="col75" class="firstcol">
    <iframe id="video" src="http://www.youtube.com/embed/videoseries?list=<?php print get_post_meta($post->ID,"playlist_id", true); ?>" width='560' height='350' frameborder="0"></iframe>
    <div id="col25">
        <h2><?php echo get_post_meta($post->ID,"speaker", true); ?></h2>
        <h3 class="date"><?php echo the_date(); ?></h3>


#1 楼

请参阅有关使用`the_date'的特殊说明。


特别说明:如果同一天在
下发布的页面上有多个帖子,the_date()仅显示日期对于第一个帖子
(即the_date()的第一个实例)。要为同一天发布的
帖子重复日期,您应该使用模板标签
the_time()或get_the_date()(从3.0开始),并带有特定于日期的格式
字符串。用于添加在管理界面中设置的
日期。



您正在使用query_posts拧紧全局变量

回显已经在浏览器中打印的功能


您实际上是对所有模板标签执行此操作。
echo the_date();更改为:echo get_the_date('F j, Y');
从您的回显中删除回显已打印到浏览器的模板标签,或使用返回该值的备用功能。


使用新的WP_Queryget_posts代替query_posts
阅读法典。它告诉您如何使用所有这些功能,并且非常有用:)


评论


get_the_date()解决了我的问题,但是现在我的sidebar.php get_the_date()坏了。

– zachdyer
2012年5月17日在22:06

query_posts的另一个受害者

– Chris_O
2012年5月17日在22:07

好的,现在可以正常工作了,但是我不得不使用echo标签。这就是为什么它在我的sidebar.php中不起作用的原因。

– zachdyer
2012年5月17日在22:22

#2 楼

the_date()仅在之前未打印相同日期的情况下才打印日期。
否,这与其他类似功能不一致。但这就是它在WordPress祖先b2 / cafelog中的工作方式,向后兼容性始终胜过逻辑……:)

要打印日期,请始终使用get_the_date()

<?php echo get_the_date(); ?>




<?php echo mysql2date( get_option( 'date_format' ), $post->post_date); ?>


评论


不,不,不。现在我的侧边栏get_the_date坏了。那里发生了什么?

– zachdyer
2012年5月17日22:00

请参阅Cris_O的答案,不要使用query_posts()。 :)

– fuxia♦
2012年5月17日在22:04

您正在使用query_posts破坏您的全局变量。请参阅下面的答案。

– Chris_O
2012年5月17日在22:04



#3 楼

我认为这应在while( have_posts() )条件内运行:

while ( have_posts() ) : the_post();
    echo '<li>';
    the_date();
    echo '</li>';
endwhile;


评论


我只怎么说发表日期?那就是我要做的我只查询了一个帖子。

– zachdyer
2012年5月17日在21:12

#4 楼

您需要初始化循环才能使某些功能起作用。所有这些功能都在其法典页面上列出了它们将无法在循环外正常运行。

评论


不,这不起作用,我张贴了我在帖子中所做的代码。

– zachdyer
2012年5月17日在21:27

#5 楼

// This won't show date in all cases
the_date( 'F d, Y' );

// This will show date in all cases
the_time( 'F d, Y' );