Я хотел бы иметь один пост на моей первой странице (всегда последний), но пусть нормальный пейджинг работает. Таким образом, на первой странице есть пост 1, на следующей странице должен быть пост 2-11 (1-10 тоже хорошо), затем 12-21 или 11-20 и так далее. Я знаю, что могу изменить количество постов в зависимости от контекста , но если установить значение «1» на главной странице, это означает, что на других страницах также будет отображаться только один пост.
Моя главная проблема в том, что /page/2/
и так далее работает, но /page/1/
всегда перенаправляет на настоящую домашнюю страницу /
. Это означает, что сообщения 2-10 всегда пропускаются, поскольку на странице 2 показано 11-20. В настоящее время я решаю эту проблему, ссылаясь на свой архив, но это не идеально, когда вы приходите на первые посты года, и там меньше постов и нет очевидного способа продолжения.
источник
is_front_page()
наis_archive()
илиis_category()
, я думаю, вы можете получить, где вы должны быть.Хорошо, возможно, это странный или сложный способ сделать это, но у меня была похожая проблема (я хотел отобразить текст приветствия и три новейших сообщения определенной категории на первой странице. Итак, я сделал:
выглядит так: http://hinek.de (страница на немецком языке, извините)
Если вам это подходит, и вам нужна дополнительная информация или пример кода для шаблона страницы, оставьте комментарий, и я отредактирую этот пост.
источник
Я предполагаю, что вы используете Wordpress 3.0.x?
Показать только один пост (в любой категории) на первой странице легко. Используйте
query_posts('post_per_page=1')
в своемhome.php
файле вместо вызоваget_template_part('loop')
.Следовать обычным методам пейджинга после этого немного сложно. В вашем
loop.php
файле я предлагаю поставить<?php global $paged; ?>
перед<?php if (have_posts()) : ?>
оператором и использовать$paged
переменную иquery_posts()
функцию для изменения вашего запроса, чтобы он отображал правильные сообщения.Ваш
loop.php
файл будет выглядеть примерно так (примечание: не проверено):Я использовал
$paged - 1
просто потому, что на странице 2 будут показаны сообщения 1–10, а на странице 3 - сообщения 11–20 и т. Д.источник
paged
параметра не нарушит ничего другого, напримерnext_posts_link
? Может быть, лучше изменить запрос вpre_get_posts
хуке, чтобы я не создавал новый запрос? И да, это WP 3.next_posts_link
. Единственный способ выяснить это, конечно, попробовать.paged
параметр вpre_get_posts
хуке,redirect_canonical
включится и захочет заменить URL новымpaged
параметром. В этом случае я могу отключить перенаправления, ноnext_posts_link
использую глобальную$paged
переменную, для которой устанавливается новое значение, но я не знаю, по какому коду, поэтому она неверна.pre_get_posts
крючком, поэтому я не могу помочь. Кроме того, попробуйте изменить$paged
переменную напрямую (например,$paged = $paged - 1)
если вы беспокоитесь)next_posts_link()
.Этот вопрос немного стар, но для тех, кто находит это в современную эпоху, вы никогда не должны вызывать query_posts . Из кодекса Wordpress:
Вместо этого вы должны использовать
pre_get_posts
хук в functions.php следующим образом:Тем не менее, имейте в виду, что в некоторых случаях (например, корректировка смещения постов) использование
pre_get_posts
хука может испортить вашу нумерацию страниц. Исправить это не очень сложно, но это то, что нужно знать. Вот пример того, как это исправить здесь .источник