Поддержка Проблемы и решения Формат даты post_date

Просмотр 11 ответов — с 1 по 11 (всего 11)
  • 
    <h2>Последнее</h2>
    <ul>
        <?php 
          $args = array(
            'numberposts' => 6,
            'post_status' => 'publish',
            'orderby' => 'post_date',
          ); 
          $result = wp_get_recent_posts($args);
            foreach( $result as $p ){ 
    setup_postdata( $p );
        ?>
      <li><a href="<?php echo get_permalink($p['ID']) ?>"><?php echo $p['post_title'] ?></a>&nbsp;<?php echo '(' . get_the_time() . ')' ?>&nbsp;<?php echo '<sup>' . $p['comment_count'] . '</sup>' ?></li>
      <?php 
      } 
      ?>
    </ul>
    
    • Ответ изменён 7 лет назад пользователем Flector.
    Автор carbonady

    (@carbonady)

    Сработало. Но по-странному: код вывел время, а не дату. Причём, одинаковую для каждой из ссылок. Я немного подправил, насколько хватило знаний:
    get_the_time('j F Y')

    Но результат оказался аналогичным — дата так же оказалась одной и той же, «29 марта 2017». Видимо по дате последнего поста из списка.

    Как жить?

    Модератор Yuri

    (@yube)

    Попробуйте так: get_the_time('j F Y', $p)

    Автор carbonady

    (@carbonady)

    Юрий, круто. Теперь все ссылки датированы не 29, а 23 марта :-))

    SeVlad, мне понравилось. А как применить? Меня хватило только на
    <?php echo date_i18n( get_option( 'date_format' ), strtotime( '11/15-1976' ) ); ?>

    Получил везде нынешнюю дату ))

    сдался вам этот wp_get_recent_posts, используйте нормальный цикл. аля:

    
    <h2>Последнее</h2>
    <ul>
        <?php 
          $args = array(
            'posts_per_page' => 6,
            'post_status' => 'publish',
            'orderby' => 'date',
          ); 
    
          $recent = new WP_Query($args);
          while($recent->have_posts()) : $recent->the_post();
            ?><li><a href='<?php the_permalink(); ?>'><?php the_title(); ?></a>&nbsp;<?php echo '(' . get_the_time('j F Y в H:i') . ')' ?>&nbsp;<?php echo '<sup>' . $post->comment_count . '</sup>' ?></li><?php 
          endwhile;
         
        wp_reset_query(); 
      ?>
    </ul>
    

    А как применить?

    Ну как-то так:
    echo date_i18n( 'j F Y', strtotime( '11/15-1976' ) );

    АПД. Я не уверен точно, но по-моему со склонениями названий месяцев всё также есть проблема.
    Вот тут есть решение если что.

    • Ответ изменён 7 лет назад пользователем SeVlad. Причина: Добавка

    со склонением помогает плагин http://www.wordpressplugins.ru/critical/russian-date.html, до сих пор.

    Модератор Sergey Biryukov

    (@sergeybiryukov)

    Live and Learn

    В текущих версиях date_i18n( 'j F Y' ) правильно склоняется и без плагина.

    Автор carbonady

    (@carbonady)

    Flector, спасибо! Заработало. То есть «post_date» оказался как бы и не нужен? Или не сработает в принципе?

    Со склонениями была проблема, но решилась давно — примерно тем же способом, о котором расписано у Камы.

    Flector, спасибо! Заработало. То есть «post_date» оказался как бы и не нужен? Или не сработает в принципе?

    он работает, только его надо приводить к человеческому виду, а это лень делать, когда есть стандартный get_the_time. и вообще, в wordpress почему-то есть несколько функций, дублирующих основной цикл wp_query — со своими параметрами и особенностями. разбираться в них смысла нет, проще основной цикл прикрутить ко всему, что надо.

Просмотр 11 ответов — с 1 по 11 (всего 11)
  • Тема «Формат даты post_date» закрыта для новых ответов.