正在研究我使用WordPress的分页问题。我的page-foobar.php
文件是:
<?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>
在endif;
之后引用this answer:
该链接在网址中显示为site/foobar/page/2/
,但会显示404页面。在进行了一些进一步的研究之后,我遇到了一篇提到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)
。我的分页错误是什么?
进一步参考:
如何正确地将我的分页转到下一页?
答案 0 :(得分:1)
package main
func main() {
buffer := Buffer{}
buffer.AddRecord("myKey", 12345)
}
type Buffer struct {
records map[string][]interface{}
}
// ProcessRecord adds a message to the buffer.
func (buffer *Buffer) AddRecord(key string, record interface{}) {
_, ok := buffer.records[key]
if !ok {
buffer.records[key] = make([]interface{}, 0)
}
buffer.records[key] = append(buffer.records[key], record)
}
答案 1 :(得分:0)
在做了一些进一步的研究后,我遇到了我的问题的解决方案,我希望它可以帮助别人。 Sindhu提交的答案在添加以下内容方面具有优势:
$paged = (get_query_var('paged')) ? get_query_var('paged') : 1;
以及对参数的修改:
$foobar_args = array( 'post_type' => 'foobar', 'posts_per_page' => 4, 'paged' => $paged);
get_query_var()
的法典。进行这项额外更改后,它仍然无法正常工作,因此我开始测试我的永久链接。当我在Default
下运行代码时,分页工作正常。当我更改为Post name
并保存两次时,它仍然无法正常工作。浏览完毕后,我决定搜索custom post type giving 404 error
,然后我跑过&#34; Fixing Custom Post Type 404 Errors In WordPress&#34;提到我可以创造一个双重slu ..经过审查,我实际上是这样做的,WordPress正在与双重冲突发生冲突。我决定将posttype-foobar.php
更改为posttype-foobar_t.php
并更新我的functions.php文件。我没有修改我的localhost上的数据库来修复slug问题,而是决定安装一个带有修改后的更改的干净安装,它可以工作。
我还想指出一些关于大多数帖子的调查结果,提到你必须将查询称为$wp_query = new WP_Query( $foobar_args );
。