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 (), чого я не хочу. Я хочу запитати останнє відео, як я зробив над циклом.

До речі, я раніше використовував функцію_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); ?>

NOOOOOOOOOOOOOOOOOOOOOO. Тепер моя бічна панель get_the_date зламана. Що там відбувається?
zachdyer

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.