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>

Ответы:


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. Прочитайте Кодекс. Он рассказывает вам, как использовать все эти функции и очень полезен :)


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;

Как мне просто сказать дату поста? Это все, что я хочу сделать? Я только запросил один пост.
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' );
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.