the_date()不起作用


20

我正在使用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>

Answers:


51

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

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

  1. 您正在使用query_posts哪个螺丝了全局
  2. 您正在回显已经打印到浏览器的功能

    • 您实际上是对所有模板标记执行此操作。
    • 更改echo the_date();为:echo get_the_date('F j, Y');
    • 从已经打印到浏览器的模板标签中删除回显,或者使用返回该值的备用函数。
  3. 使用新的WP_Queryget_posts代替query_posts

  4. 阅读食典。它告诉您如何使用所有这些功能,并且非常有用:)


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

1
query_posts
Chris_O的

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

17

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

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

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

0

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

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

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

0

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


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

-1
// 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' );
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.