一直在研究我使用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; ?>
我說:鏈接顯示的網址爲site/foobar/page/2/
,但顯示404頁:
<nav>
<?php previous_posts_link('« Newer',$foo_query->max_num_pages); ?>
<?php next_posts_link('Older »',$foo_query->max_num_pages); ?>
</nav>
的endif;
後引用this answer後。經過一些進一步的研究後,我跑過一篇文章,提到page-foobar.php
和posttype-foobar.php
names can clash以便重命名其中的一個。我將其更名爲posttype-foobar2.php
,更改了我的functions.php
,並進行了測試,並且仍然使用正確的網址發送到404頁面。另一篇文章提到,您必須使用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
我怎樣才能正確地得到我的分頁去到下一個頁面?
在'wp_reset_postdata'之前加'nav'並嘗試 – Karthik
我試過了,仍然出錯。我將編輯我的問題 –
這些函數需要在循環內發生(即// code是)。 – rnevius