the_date() не работает
Я использую 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>Последнее видео</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">Смотреть</a></p>
Вот попытка поместить запрос в цикл:
<?php query_posts("posts_per_page=1post=type&page=post_parent=10");?>
<?php if ( have_posts() ) : while ( have_posts() ) : the_post(); ?>
<h2>Последнее видео</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">Смотреть</a></p>
<?php endwhile; else: ?>
<p><?php _e('Извините, записей соответствующих вашим критериям не найдено.'); ?></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>
Смотрите особое примечание об использовании `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');
- Уберите echo из ваших шаблонных тегов, которые уже выводят в браузер, или используйте альтернативные функции, которые возвращают значение.
Используйте новый
WP_Query
илиget_posts
вместоquery_posts
Читайте Кодекс. В нём рассказывается, как использовать все эти функции, и это очень полезно :)

get_the_date() решил мою проблему, но теперь get_the_date() в sidebar.php не работает.

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 сломан. Что там произошло?

Смотрите ответ Cris_O и не используйте query_posts()
. :)
