Архивные записи в WordPress
Помнится, зимой мы с Altesack очень долго бились над тем, что бы архивные записи выводились не в виде ленты, а в виде списки без постраничной разбивки. Т.е. при клике на определённый месяц (или год, день) выводился список постов за этот период. Естественно, описать сразу эти манипуляции я не удосужился, а потом просто забыл.
Думаю, таки надо это сделать.
Для начала, как в сайдбар вывести архив. Если тема поддерживает виджеты, то всё очень просто: активируем одноимённый виджет, сохраняем изменения и дело в шляпе. Если же не поддерживает, то в файле sidebar.php прописываем следующие строки:
1 2 3 4 | <h3 id="sidebar_title">Архивы</h3> <ul> < ?php wp_get_archives('type=monthly&show_post_count=1'); ?> </ul> |
Ну, и CSS редактируем по собственному вкусу.
Эти строки добавят помесячный список в сайдбаре с количеством записей за этот месяц.
Далее открываем index.php и пересохраняем с названием date.php. Ищем в нём основной вывод. Типа такого:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 | <div class="halfcolumn"> < ?php if (have_posts()) : ?> < ?php while (have_posts()) : the_post(); ?> <div class="entry" id="post-<?php the_ID(); ?>"> <h3><a href="<?php the_permalink() ?>" rel="bookmark" title="Ссылка на запись < ?php the_title(); ?>">< ?php the_title(); ?></a></h3> <p>< ?php the_time('d.m.Y') ?> от < ?php the_author() ?></p> <br /> < ?php the_content('Читать полностью »'); ?> <br /> <p>Рубрики: < ?php the_category(', ') ?> <strong>|</strong> < ?php edit_post_link('Редактировать','','<strong>|'); ?> < ?php comments_popup_link('Комментариев нет »', '1 Комментарий »', 'Комментарии (%) »'); ?></p> < ?php comments_template(); ?>< ?php if(function_exists('the_ratings')) { the_ratings(); } ?> </div> < ?php endwhile; ?> < ?php else : ?> <h2 align="center">Не найдено</h2> <p align="center">Извините, но у нас нет того, что Вы здесь ищете.</p> < ?php endif; ?> </div><!-- end halfcolumn --> |
И вместо этого куска благополучно вставляем следующий:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 | <div class="arj">
< ?php if(is_day()) { query_posts('year='.get_the_time('Y').'&monthnum='.get_the_time('m').'&day='.get_the_time('d').'&posts_per_page=-1' ); } ?>
< ?php if(is_month()) { query_posts('year='.get_the_time('Y').'&monthnum='.get_the_time('m').'&posts_per_page=-1' ); } ?>
< ?php if(is_year()) { query_posts('year='.get_the_time('Y').'&posts_per_page=-1' ); } ?>
< ?php if (have_posts()) : ?>
<ul>
< ?php while (have_posts()) : the_post(); ?>
<li><a href="<?php the_permalink() ?>" rel="bookmark" title="Ссылка на запись < ?php the_title(); ?>">< ?php the_title(); ?></a></li>
< ?php endwhile; ?>
</ul>
< ?php else : ?>
<h2 align="center">Не найдено</h2>
<p align="center">Извините, но у нас нет того, что Вы здесь ищете.</p>
< ?php endif; ?>
</div><!-- end arj --> |
Собственно, и всё шаманство!
Связанные записи
Рубрики: HOWTO, интернет | 7 комментариев
Очень полезная информация! Я считаю, это должно быть включено в стандартную поставку WordPress
Арбайтен нихт.
Когда заливаю файл date.php и кликаю на любую архивную строку – выдает код и надпись “ничего не найдено”
Архив у меня реализован через виджет. Причем на втором сайдбаре. Может проблема в этом? Попробовал поменять 19 строку в date.php – выдает ошибку. Help
Скинь мне на мыло свой date.php. В zip-архиве. Буду дома – гляну.
удалил все пробелы, теперь ничего не происходит. Все осталось как было до этого.
Так, слей-ка ты мне вообще всю твою тему. Архивом. Постараюсь вечером глянуть.
спасибо за помощь, щаз скину
Ptah, сорри, вот только приехал… Завтра гляну.