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>
zachdyer
источник

Ответы:

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_Queryили get_postsвместоquery_posts

  4. Прочитайте Кодекс. Он рассказывает вам, как использовать все эти функции и очень полезен :)

Chris_O
источник
1
get_the_date () исправил мою проблему, но теперь мой sidebar.php get_the_date () не работает.
zachdyer
1
Еще одна жертваquery_posts
Chris_O
Хорошо, теперь это работает, но мне пришлось использовать эхо-теги. Вот почему это не сработало в моем 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); ?>
Фуксия
источник
NOOOOOOOOOOOOOOOOOOOO. Теперь моя боковая панель get_the_date не работает. Что там происходит?
Зачдиер
1
Смотрите ответ Cris_O и не используйтеquery_posts() . :)
fuxia
Ваше использование query_posts, которое нарушает ваши глобальные переменные. Смотрите мой ответ ниже.
Chris_O
0

Я думаю, что это должно быть выполнено в рамках while( have_posts() )условного:

while ( have_posts() ) : the_post();
    echo '<li>';
    the_date();
    echo '</li>';
endwhile;
Kristian
источник
Как мне просто сказать дату поста? Это все, что я хочу сделать? Я только запросил один пост.
zachdyer
0

Вам нужно инициализировать цикл для работы определенных функций. Все эти функции на своей странице кодекса указывают, что они не будут работать должным образом вне цикла.

mor7ifer
источник
Нет, это не работает, я разместил код того, что я сделал в посте.
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' );
AVI
источник