Здравствуйте, почему-то у меня на вордпрессе такая проблема:
не работает навигация по сайту. на главной ( в index.php) установлено 5 постов на страницу.
при клике, например, для перехода на страницу, открывается адрес вида: страница/page/2
при этом сам контент страницы НЕ МЕНЯЕТСЯ!
пока эксперементы успехом не увенчались. в чём проблема не знаю. фот на всякий случай index.php:
<?php get_header(); ?> <?php include(TEMPLATEPATH."/sidebar_l.php");?> <div id="content"><!--content--> <div id="mainnews" class="mainnewsbox"> <h1>Главные новости биатлона</h1> <?php $posts_new = get_posts('category=1&numberposts=5'); foreach ($posts_new as $post_new) : echo '<li class="news_item"><a href="'; echo get_permalink($post_new->ID); echo '">'; echo mysql2date('j.m.Y', $post_new->post_date); echo ' - '; echo $post_new->post_title; echo '</a></li>'; endforeach; ?> </div> <marquee scrollamount="3" width="480"><font color="red" size=2>Фотографии с мужского спринта на этапе Кубка мира в Антхольце в разделе "Фотогалереи"</font></marquee> <?php query_posts('cat=7,8,9,10&posts_per_page=5'); ?> <?php if (have_posts()) : while (have_posts()) : the_post(); ?> <div class="entry"><!-- Entry --> <h2 class="post-title"> <a href="<?php the_permalink() ?>" rel="bookmark"><?php the_title(); ?></a> </h2> <?php the_content();?> <div id="postmeta" class="postmetabox"> <?php the_tags('Теги: ',' • ','<br />'); ?> <?php the_time('j M, Y G:i') ?> <?php wp_link_pages(); ?> <?php comments_popup_link(__('<strong>Комментариев (0)</strong>'), __('<strong>Комментариев (1)</strong>'), __('<strong>комментариев(%)</strong>')); ?> </div> </div><!--/entry--> <?php endwhile; else: ?> <div class="entry"><h2><?php _e('Ничего не найдено((.'); ?></h2></div> <?php endif; ?> <?php wp_pagenavi(); ?> </div><!--/content--> <?php include(TEMPLATEPATH."/sidebar_r.php");?> <?php get_footer(); ?> </div><!--/Container--> </body> </html>
навигация реализована Pagenavi (<?php wp_pagenavi(); ?>), но со стандартной навигацией та же история….
Проблема в строке
<?php query_posts(‘cat=7,8,9,10&posts_per_page=5′); ?>
должно быть
<?php query_posts($query_string.’&cat=7,8,9,10&posts_per_page=5’); ?>
урра! помогло, спасибо Ю.Б откуда вы всё так хорошо знаете?!))) кстати что меняет эта функция?
Достигается упражнениями (с) 🙂
В процессе инициализации движок делает выборку постов, подлежащих выводу на странице (в смысле по урлу, т.к. у слова страница есть еще ряд значений). Что именно выбирать, определяют параметры запроса, те, что после "index.php?" (кстати, в енверонменте они зовутся QUERY_STRING). Если используется ЧПУ, то урл анализируется и разбирается на те же самые параметры. Фактически это и есть $query_string. Когда в шаблоне выполняется query_posts, происходит другая выборка, заменяющая первую. Параметры новой выборки указываются в параметрах вызова query_posts. В частности, мы можем изменить рубрики для вывода (cat), количество записей (posts_per_page), порядок и т.д. Так вот, в конкретном случае с Вашим кодом в выборке не учитывались те параметры, которые были получены при инициализации, в частности, терялась инфа о номере страницы (тут слово страница уже в другом смысле). Когда мы добавили переменную $query_string,которую "собрал" иницализатор на основе урла, то фактически восстановили первоначальные параметры, часть из которых – рубрики и количество – мы тут же заменили на свои. В результате у нас не потерялась информация о номере страницы, но выборка была сделана с новыми параметрами.
Хоть в FAQ статью переноси 😀
подскажите ещё пожалуйста
у меня есть такой цикл
последняя строчка отвечает за появление рядом с названиями постов количества комментариев
Как добавить эту функцию в такой код :
Если по-культурному, то посмотрите Template Tags/get posts « WordPress Codex
и обратите внимание на наличие в циклах вызова setup_postdata().
А если по рабоче-крестьянски, то можно попробовать так:
$id = $post_new->ID;
comments_popup_link(…….
(если код внутри какой-то функции, скажем, в сайдбаре, то понадобится еще и "global $id;")
сейчас попробую рабоче-крестьянский для начала прилепить.( вообще код идёт на index.php, в другом цикле на этой же странице идут другие посты,а в сайдбаре идут ещё дригие посты: весь index.php я привёл выше)
только вот не уверен, куда и как его вставлять. так?
<?php
$posts_new = get_posts(‘category=1&numberposts=5’);
foreach ($posts_new as $post_new) :
echo ‘<li class="news_item"><a href="’;
echo get_permalink($post_new->ID);
$id = $post_new->ID;
comments_popup_link(__(‘<strong>Комментариев (0)</strong>’), __(‘<strong>Комментариев (1)</strong>’), __(‘<strong>комментариев(%)</strong>’));
echo ‘">’;
echo mysql2date(‘j.m.Y’, $post_new->post_date);
echo ‘ – ‘;
echo $post_new->post_title;
echo ‘</a></li>’;
endforeach;
?>
да, так))
Прошу помощи. У меня таже проблема что и у автора поста – не работает постраничная навигация. В дефолтном шаблоне все работает нормально. Посмотрите пожалуйста код, может кто нибудь увидит ошибку. Я в php совсем ноль…
loop-blog.php
Неужели никто не посмотрит? Эта проблема сводит на нет все начинание – блог без навигации не блог. Помогите пожалуйста.