Изучал вопрос разбивки на страницы, который у меня есть с WordPress. Мой page-foobar.php
файл:Почему next_post_link() не работает с WP_Query?
<?php
// the query
$foobar_args = array('post_type' => 'foobar', 'posts_per_page' => 4, 'ignore_sticky_posts' => true,);
$foo_query = new WP_Query($foobar_args);
if ($foo_query->have_posts()) : ?>
<?php while ($foo_query->have_posts()) : $foo_query->the_post();?>
// code
<?php endwhile; ?>
<?php wp_reset_postdata(); ?>
<?php else : ?>
<p><?php _e('Sorry, no foobar posts at this time.', 'theme'); ?></p>
<?php endif; ?>
Я добавил:
<nav>
<?php previous_posts_link('« Newer',$foo_query->max_num_pages); ?>
<?php next_posts_link('Older »',$foo_query->max_num_pages); ?>
</nav>
после ссылки this answer после endif;
:
Ссылка показывает в URL, как site/foobar/page/2/
но отображает страницу 404. После некоторых дальнейших исследований я просмотрел статью, в которой упоминались page-foobar.php
и posttype-foobar.php
names can clash, чтобы переименовать одну из них. Я переименовал posttype-foobar2.php
, изменил мой functions.php
, протестировал и по-прежнему отправил на страницу 404 с правильным URL-адресом. Другая статья упоминается, что вы должны использовать wp_query()
поэтому я изменил мой page-foobar.php
на:
<?php
// the query
$foobar_args = array('post_type' => 'foobar', 'posts_per_page' => 4, 'ignore_sticky_posts' => true,);
$wp_query = new WP_Query($foobar_args);
if ($wp_query->have_posts()) : ?>
<?php while ($wp_query->have_posts()) : $wp_query->the_post();?>
// code
<?php endwhile; ?>
<?php wp_reset_postdata(); ?>
<?php else : ?>
<p><?php _e('Sorry, no foobar posts at this time.', 'theme'); ?></p>
<?php endif; ?>
пагинация:
<nav>
<?php previous_posts_link('« Newer',$wp_query->max_num_pages); ?>
<?php next_posts_link('Older »',$wp_query->max_num_pages); ?>
</nav>
Я сделал тест, добавив это до <?php wp_reset_postdata(); ?>
и после <?php endwhile; ?>
:
<nav>
<?php previous_posts_link('« Newer',$wp_query->max_num_pages); ?>
<?php next_posts_link('Older »',$wp_query->max_num_pages); ?>
</nav>
, и я по-прежнему получаю сообщение на странице 404. Когда я меняю next_posts_link()
на <?php var_dump(next_posts_link('« Older Entries', $wp_query->max_num_pages)); ?>
, он возвращает NULL
. Если я изменю next_posts_link()
на get_next_posts_link()
, я получаю string(99)
. Что я делаю неправильно с моим разбиением на страницы?
Далее Реферировано:
- Wordpress pagination (next_posts_link) on custom wp_query not showing
- next_posts_link 404 error
- WP_Query and next_posts_link
Как правильно получить свою нумерацию страниц, чтобы перейти к следующей странице?
Добавьте 'nav' перед' wp_reset_postdata' и попробуйте – Karthik
Я попробовал это и все еще получаю ошибку. Я отредактирую свой вопрос –
Эти функции должны выполняться внутри цикла (т. Е. Где '// code'). – rnevius