木材 - 分页不使用默认WordPress查询

发布于 2025-02-06 03:52:59 字数 1051 浏览 3 评论 0 原文

我正在尝试在博客页面上的默认查询中显示分页。 因此,我在page-home中使用此代码的文件称为home.php

<?php

use Timber\Post;
use Timber\Timber;

$post = new Post();

$context = Timber::context();
$context['post'] = $post;

global $paged;
if (!isset($paged) || !$paged){
    $paged = 1;
}

$args = [
    'post_staus' => 'published',
    'posts_per_page' => 2,
    'paged' => (get_query_var('paged')) ? get_query_var('paged') : 1,
    'offset' => 1,
];
$context['posts'] = Timber::get_posts($args);

$argsNewest = [
    'posts_per_page' => 1,
    'offset' => 0,
];
$context['latest'] = Timber::get_posts($argsNewest);

Timber::render('page-home.twig', $context);

。我试图显示我的分页,但没有任何成功。

{% include 'partial/pagination.twig' with { pagination: posts.pagination({show_all: false, mid_size: 3, end_size: 2}) } %}

另一个奇怪的是,当我尝试转让诸如 {{dump(ports)}} 之类的帖子时,它无法正常工作,但是lop like {%for post in posts%} 工作正常,我可以显示帖子。

所以我的问题:

  1. 为什么我的分页不起作用?
  2. 为什么我的垃圾场不起作用,而是循环是?

I'm trying to display pagination in my default query on blog page.
So I have file called home.php with this code

<?php

use Timber\Post;
use Timber\Timber;

$post = new Post();

$context = Timber::context();
$context['post'] = $post;

global $paged;
if (!isset($paged) || !$paged){
    $paged = 1;
}

$args = [
    'post_staus' => 'published',
    'posts_per_page' => 2,
    'paged' => (get_query_var('paged')) ? get_query_var('paged') : 1,
    'offset' => 1,
];
$context['posts'] = Timber::get_posts($args);

$argsNewest = [
    'posts_per_page' => 1,
    'offset' => 0,
];
$context['latest'] = Timber::get_posts($argsNewest);

Timber::render('page-home.twig', $context);

In the page-home.twig I'm trying to display my pagination but without any success.

{% include 'partial/pagination.twig' with { pagination: posts.pagination({show_all: false, mid_size: 3, end_size: 2}) } %}

The other weird thing is when I'm trying to dump posts like {{ dump(posts) }} it's not working however loop like {% for post in posts %} working fine and I can display posts.

So my questions:

  1. Why my pagination didn't work?
  2. Why my dump not working but loop yes?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

忆离笙 2025-02-13 03:52:59
  1. 您可以使用pre_get_posts过滤器,因此可以使用默认的WP_QUERY。

在您的 function.php 文件中,添加此代码(或附加到现有的pre_get_posts filter)

function modify_blog_posts_query($query) {
    if ( $query->is_home() && $query->is_main_query() ) {
        $query->set( 'posts_per_page', 2 );
        $query->set( 'paged', (get_query_var('paged')) ? get_query_var('paged') : 1 );
        $query->set( 'offset', 1 );
    }
}
add_action( 'pre_get_posts', 'modify_blog_posts_query' );

您可能需要在代码顶部添加使用timber \ postquery;

在您的home.php文件中,替换

$args = [
    'post_staus' => 'published',
    'posts_per_page' => 2,
    'paged' => (get_query_var('paged')) ? get_query_var('paged') : 1,
    'offset' => 1,
];
$context['posts'] = Timber::get_posts($args);

$context['posts'] = new Timber\PostQuery();

关于如何在树枝中使用分页的信息。
参见
htttps://developer.wordpress.orge.org/reference.orperion/reference/hooks/hooks/pre_get_posts/pre_pet_posts/ 有关PRE_GET_POSTS过滤器的更多信息。

  1. 对于转储功能,请在上面的此新代码中再次尝试Twig Dump功能。
  1. You could use the pre_get_posts filter so you can use the default WP_Query.

In your functions.php file, add this code (or append to existing pre_get_posts filter)

function modify_blog_posts_query($query) {
    if ( $query->is_home() && $query->is_main_query() ) {
        $query->set( 'posts_per_page', 2 );
        $query->set( 'paged', (get_query_var('paged')) ? get_query_var('paged') : 1 );
        $query->set( 'offset', 1 );
    }
}
add_action( 'pre_get_posts', 'modify_blog_posts_query' );

You might need to add use Timber\PostQuery; at the top of your code.

In your home.php file, replace

$args = [
    'post_staus' => 'published',
    'posts_per_page' => 2,
    'paged' => (get_query_var('paged')) ? get_query_var('paged') : 1,
    'offset' => 1,
];
$context['posts'] = Timber::get_posts($args);

with

$context['posts'] = new Timber\PostQuery();

See https://timber.github.io/docs/guides/pagination/ on how to use pagination in Twig.
See https://developer.wordpress.org/reference/hooks/pre_get_posts/ for more information on the pre_get_posts filter.

  1. For the dump function, try the Twig dump function again with this new code above.
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文