木材分页
Pagination in timber
我正在使用 Timber,目前正在尝试按照 Timber docs 进行分页,但到目前为止,还没有成功。下面是我的自定义存档 php 文件:
global $paged;
if (!isset($paged) || !$paged){
$paged = 1;
}
$context = Timber::get_context();
$args = array(
'post_type' => 'product',
'posts_per_page' => 2,
'paged' => $paged,
);
$context['subCatItems'] = new Timber\PostQuery($args);
Timber::render('archive-product.twig', $context);
和我对应的Twig文件:
<div class="l-container vert-push--small vert-push--adult--medium">
{% for post in posts %}
<div class="c-std">{{ post.title }}</div>
{% endfor %}
</div>
<div class="tool-pagination c-std">
{% if posts.pagination.prev %}
<a href="{{posts.pagination.prev.link}}" class="prev {{posts.pagination.prev.link|length ? '' : 'invisible'}}">Prev</a>
{% endif %}
<ul class="pages">
{% for page in posts.pagination.pages %}
<li>
{% if page.link %}
<a href="{{page.link}}" class="{{page.class}}">{{page.title}}</a>
{% else %}
<span class="{{page.class}}">{{page.title}}</span>
{% endif %}
</li>
{% endfor %}
</ul>
{% if posts.pagination.next %}
<a href="{{posts.pagination.next.link}}" class="next {{posts.pagination.next.link|length ? '' : 'invisible'}}">Next</a>
{% endif %}
</div>
目前的主要问题是 posts_per_page
似乎什么也没做,我只是在页面上呈现所有帖子(目前大约 20 个),而分页应该只有 2 个(当前未显示。有什么想法吗?
不幸的是我没有发表评论的特权所以我不得不post这样。
您的代码显示您呈现 'archive-product.twig' 并查询您的 'product' post 类型,因此您应该根据链接到的文档尝试使用活动查询的方法。你试过了吗?
编辑
在 post 完成此操作后不久,我需要构建一个木材树枝分页的实现 - 但一开始就失败了,因为项目计数与每页的 post 数量不同如 WP 后端中所定义。我想添加一点点可能对某人有用的信息..
因此,如果您在自定义 post 类型的存档中需要不同数量的 post 分页,请尝试以下操作:
在您的控制器或存档文件中:
global $paged;
if (!isset($paged) || !$paged){
$paged = 1;
}
$args_cp = array(
'post_type' => 'HERE_YOUR_CUSTOM_POSTTYPE_NAME',
'posts_per_page' => 2,
'paged' => $paged
);
$context['posts'] = new Timber\PostQuery($args_cp);
此外,您 function.php 中需要这个,只要
post每页的秒数与 WP 后端不同:
function cpt_archive_posts_per_page( $query ) {
// for cpt or any post type main archive
if ( $query->is_main_query() && ! is_admin() && is_post_type_archive( 'HERE_YOUR_CUSTOM_POSTTYPE_NAME' ) ) {
$query->set( 'posts_per_page', '2' ); // number has to be the same like in your query / 'posts_per_page'
}
}
add_action( 'pre_get_posts', 'cpt_archive_posts_per_page' );
如果您在第 2 页收到 404,请尝试 Timber Twigs 作者的建议:
https://timber.github.io/docs/guides/pagination/
部分:分页 pre_get_posts
function my_home_query( $query ) {
if ( $query->is_main_query() && !is_admin() ) {
$query->set( 'post_type', array( 'movie', 'post' ));
}
}
add_action( 'pre_get_posts', 'my_home_query' );
当然可以根据您的需要调整值:)
我正在使用 Timber,目前正在尝试按照 Timber docs 进行分页,但到目前为止,还没有成功。下面是我的自定义存档 php 文件:
global $paged;
if (!isset($paged) || !$paged){
$paged = 1;
}
$context = Timber::get_context();
$args = array(
'post_type' => 'product',
'posts_per_page' => 2,
'paged' => $paged,
);
$context['subCatItems'] = new Timber\PostQuery($args);
Timber::render('archive-product.twig', $context);
和我对应的Twig文件:
<div class="l-container vert-push--small vert-push--adult--medium">
{% for post in posts %}
<div class="c-std">{{ post.title }}</div>
{% endfor %}
</div>
<div class="tool-pagination c-std">
{% if posts.pagination.prev %}
<a href="{{posts.pagination.prev.link}}" class="prev {{posts.pagination.prev.link|length ? '' : 'invisible'}}">Prev</a>
{% endif %}
<ul class="pages">
{% for page in posts.pagination.pages %}
<li>
{% if page.link %}
<a href="{{page.link}}" class="{{page.class}}">{{page.title}}</a>
{% else %}
<span class="{{page.class}}">{{page.title}}</span>
{% endif %}
</li>
{% endfor %}
</ul>
{% if posts.pagination.next %}
<a href="{{posts.pagination.next.link}}" class="next {{posts.pagination.next.link|length ? '' : 'invisible'}}">Next</a>
{% endif %}
</div>
目前的主要问题是 posts_per_page
似乎什么也没做,我只是在页面上呈现所有帖子(目前大约 20 个),而分页应该只有 2 个(当前未显示。有什么想法吗?
不幸的是我没有发表评论的特权所以我不得不post这样。
您的代码显示您呈现 'archive-product.twig' 并查询您的 'product' post 类型,因此您应该根据链接到的文档尝试使用活动查询的方法。你试过了吗?
编辑
在 post 完成此操作后不久,我需要构建一个木材树枝分页的实现 - 但一开始就失败了,因为项目计数与每页的 post 数量不同如 WP 后端中所定义。我想添加一点点可能对某人有用的信息..
因此,如果您在自定义 post 类型的存档中需要不同数量的 post 分页,请尝试以下操作:
在您的控制器或存档文件中:
global $paged;
if (!isset($paged) || !$paged){
$paged = 1;
}
$args_cp = array(
'post_type' => 'HERE_YOUR_CUSTOM_POSTTYPE_NAME',
'posts_per_page' => 2,
'paged' => $paged
);
$context['posts'] = new Timber\PostQuery($args_cp);
此外,您 function.php 中需要这个,只要 post每页的秒数与 WP 后端不同:
function cpt_archive_posts_per_page( $query ) {
// for cpt or any post type main archive
if ( $query->is_main_query() && ! is_admin() && is_post_type_archive( 'HERE_YOUR_CUSTOM_POSTTYPE_NAME' ) ) {
$query->set( 'posts_per_page', '2' ); // number has to be the same like in your query / 'posts_per_page'
}
}
add_action( 'pre_get_posts', 'cpt_archive_posts_per_page' );
如果您在第 2 页收到 404,请尝试 Timber Twigs 作者的建议: https://timber.github.io/docs/guides/pagination/
部分:分页 pre_get_posts
function my_home_query( $query ) {
if ( $query->is_main_query() && !is_admin() ) {
$query->set( 'post_type', array( 'movie', 'post' ));
}
}
add_action( 'pre_get_posts', 'my_home_query' );
当然可以根据您的需要调整值:)