选项1:
我个人更喜欢这个,因为从长远来看,它会给你更多的选择。特别是考虑到其他涉及二次查询的设置,请查看我下面链接的其他答案。
您需要做的是,利用paged
参数WP_Query
提供。此外,您必须在此处设置一个变量$paged
- 表示分页。有了这个,你可以paginate_links()
构造分页链接。
Code:
global $post;
$paged = (get_query_var(\'paged\')) ? get_query_var(\'paged\') : 1;
$ancestors = array();
$ancestors = get_ancestors($post->ID,\'page\');
$parent = (!empty($ancestors)) ? array_pop($ancestors) : $post->ID;
if (!empty($parent)) {
$kids = new WP_Query(
array(
\'post_parent\'=>$parent,
\'post_type\' => \'page\',
\'ignore_sticky_posts\' => true,
\'paged\' => $paged
)
);
if ($kids->have_posts()) {
while ($kids->have_posts()) {
$kids->the_post();
echo \'<li>\' . \'<div>\' . \'<a href="\' . get_permalink() . \'">\' . get_the_post_thumbnail() . \'</a>\' . \'<span>\' . \'<a href="\' . get_permalink() . \'">\' . get_the_title() . \'</a>\' . \'</span><br/>\';
echo \'<div class="extrainfo">\';
echo the_field("info_add");
echo \'</div>\';
echo \'</div></li>\';
}
if ( get_option(\'permalink_structure\') ) {
$format = \'page/%#%\';
} else {
$format = \'&paged=%#%\';
}
$args = array(
\'base\' => get_permalink( $post->post_parent ) . \'%_%\',
\'format\' => $format,
\'current\' => $paged,
\'total\' => $kids->max_num_pages
);
echo paginate_links( $args );
wp_reset_postdata();
}
}
注:未测试
有关其他选项,请参阅相关文档。我最近在另一篇文章中解释了这些步骤,如果要将主查询之外显示的辅助查询分页到主查询,则必须再执行几个步骤question. 例如,如果您希望进行不同的重写,而不是页面,这意味着您需要使用不同的查询变量然后进行页面化,那么您还可以在我链接的问题上找到执行此操作所需的所有信息。
选项2:
您也可以通过这种方式进行分页。这仍取决于参数的设置
paged
以及相应的变量,见上文。例如,如果您想使用wordpress提供的其他分页链接功能
previous_posts_link
/
next_posts_link()
或
posts_nav_link
, 这更容易实现。此处的钥匙正在临时更换
$wp_query
如下所示,因为默认情况下,这些函数(有关更多配置选项,请阅读文档)正在访问此对象以生成分页链接。
Code:
global $post, $wp_query;
$paged = (get_query_var(\'paged\')) ? get_query_var(\'paged\') : 1;
$ancestors = array();
$ancestors = get_ancestors($post->ID,\'page\');
$parent = (!empty($ancestors)) ? array_pop($ancestors) : $post->ID;
if (!empty($parent)) {
$kids = new WP_Query(
array(
\'post_parent\'=>$parent,
\'post_type\' => \'page\',
\'ignore_sticky_posts\' => true,
\'paged\' => $paged
)
);
// Put default query object in a temp variable
$tmp_query = $wp_query;
// Now wipe it out completely
$wp_query = null;
// Re-populate the global with our custom query
$wp_query = $kids;
if ($kids->have_posts()) {
while ($kids->have_posts()) {
$kids->the_post();
echo \'<li>\' . \'<div>\' . \'<a href="\' . get_permalink() . \'">\' . get_the_post_thumbnail() . \'</a>\' . \'<span>\' . \'<a href="\' . get_permalink() . \'">\' . get_the_title() . \'</a>\' . \'</span><br/>\';
echo \'<div class="extrainfo">\';
echo the_field("info_add");
echo \'</div>\';
echo \'</div></li>\';
}
posts_nav_link();
// Restore original query object
$wp_query = null;
$wp_query = $tmp_query;
wp_reset_postdata();
}
}