Вывод постоянного поста
25.03.2007 @ Рубрики: WordPress
Решил поделиться приобретенным опытом.
Надо было мне на днях сделать так, чтобы один пост выводился постоянно. Начал думать как это все сделать.
Понятно, что надо использовать цикл со множественным выводом.
Первой была мысль - вывести его в цикле сначало с помощью query_posts(’p=1′), а потом исключить его из общего вывода. Попробовал - не прокатило. Ладно, думаю, делать нечего - отправляюсь читать codex.wordpress.org.
Там предлагают использовать следующий алгоритм:
<?php $my_query = new WP_Query(’category_name=featured&showposts=1′);
while ($my_query->have_posts()) : $my_query->the_post();
$do_not_duplicate = $post->ID;?>
выводим пост
<?php endwhile; ?>
…
<?php if (have_posts()) : while (have_posts()) : the_post();
if( $post->ID == $do_not_duplicate ) continue; update_post_caches($posts); ?>
выводим пост
<?php endwhile; endif; ?>
Т.е. мы выводим из определенной категории category_name=featured нужное количество постов showposts=1. Однако мою проблему этот алгоритм не решил. Потому что этот метод выводит последний пост, а не тот, который мне нужен.
После часа экспериментов меня осенило! Я просто указал в WP_Query номер того поста который мне нужен. и Проблема была решена.
В конечном счете все это выглядело так:
<div id="content" class="narrowcolumn">
<?php $my_query = new WP_Query(’p=номер нужного поста’);
while ($my_query->have_posts()) : $my_query->the_post();
$do_not_duplicate = $post->ID;?>
<div class="post" id="post-<?php the_ID(); ?>">
<h2><a href="<?php the_permalink() ?>" rel="bookmark" title="Пермалинк на запись <?php the_title(); ?>"><?php the_title(); ?></a></h2>
<small><?php the_time(’F jS, Y’) ?> <!– by <?php the_author() ?> –></small>
<div class="entry">
<?php the_content(’Далее »’); ?>
</div>
<p class="postmetadata">Рубрики <?php the_category(’, ‘) ?> | <?php edit_post_link(’Редактировать’, ‘’, ‘ | ‘); ?> <?php comments_popup_link(’Комментариев нет »’, ‘1 комментарий »’, ‘Комментарии (%) »’); ?></p></div>
<?php endwhile; ?><?php if (have_posts()) : while (have_posts()) : the_post();
if( $post->ID == $do_not_duplicate ) continue; update_post_caches($posts); ?>
<div class="post" id="post-<?php the_ID(); ?>">
<h2><a href="<?php the_permalink() ?>" rel="bookmark" title="Пермалинк на запись <?php the_title(); ?>"><?php the_title(); ?></a></h2>
<small><?php the_time(’F jS, Y’) ?> <!– by <?php the_author() ?> –></small>
<div class="entry">
<?php the_content(’Далее »’); ?>
</div>
<p class="postmetadata">Рубрики <?php the_category(’, ‘) ?> | <?php edit_post_link(’Редактировать’, ‘’, ‘ | ‘); ?> <?php comments_popup_link(’Комментариев нет »’, ‘1 комментарий »’, ‘Комментарии (%) »’); ?></p></div>
<?php endwhile; ?>
<div class="navigation">
<div class="alignleft"><?php next_posts_link(’« Предыдущаяя страница’) ?></div>
<div class="alignright"><?php previous_posts_link(’Следующая страница »’) ?></div>
</div>
<?php else : ?>
<h2 class="center">Не найдено</h2>
<p class="center">Извините, но того, что Вы ищите, здесь нет.</p><?php include (TEMPLATEPATH . "/searchform.php"); ?>
<?php endif; ?></div>
Оставьте черный или белый комментарий :)
HTML: разрешено использование: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <code> <em> <i> <strike> <strong>