个性化阅读
专注于IT技术分析

我应该在单个wordpress模板中使用$post = Timber::query_post()还是$post = new TimberPost()?

我已经在Timber官方存储库中阅读到有关使用的一般性问题应在此处发布。

我是Timber / Twig的新手, 我有一个非常”基本”的问题。

在入门主题中, 我已经看到在single.php中, 将传递给$ context的$ post变量设置为

$post = Timber::query_post()

而page.php是用

$post = new TimberPost();

因此, 当我需要设置一个single-cpt.php时, 我应该使用哪种方法? Timber :: query_post()还是新的TimberPost()?

我已经尝试了它们两个, 并且两个都正常工作, 但是什么是正确的方法呢?

谢谢!

PS:我已经看到在index.php中, 使用新的Timber \ PostQuery()设置了$ context [‘post’]。这基本上可以重现模板层次结构的标准循环吗?


#1


我了解使用哪种方法可能会造成一些困惑。目前, 有很多方法可以做到, 而你尝试过的所有方法都应该可以使用。

在即将发布的Timber 2中, 我们试图统一这一点, 我们将弃用仍然存在的一些方法。因此, 从现在开始, 这就是你应该如何做。


2020年3月更新–我们反复讨论了适用于2.x的新API的外观, 并提出了几乎固定的解决方案。有些事情会在那里发生变化, 如果你想了解更多信息, 可以查看此请求。

在此之前, 这是我们推荐的处理方式:


获得一个帖子

$post = new Timber\Post();
$post = Timber::get_post();

获取帖子集

$post = new Timber\PostQuery();
$post = Timber::get_posts();

如果要对你的帖子使用分页, 则仍然必须使用Timber \ PostQuery:

$post = new Timber\PostQuery();

(在Timber 2.x中, Timber :: get_posts()将可用于分页, 但在1.x中尚不可用。)

标准循环

我已经看到在index.php中, 使用新的Timber \ PostQuery()来设置$ context [‘post’]。这基本上可以重现模板层次结构的标准循环吗?

是!

实际上, 如果你不向PostQuery()传递任何参数, 则甚至不必设置$ context [‘posts’], 因为Timber已经在Timber :: get_context()中为你完成了此操作。

index.php

<?php
use Timber\Timber;

$context = Timber::get_context();

Timber::render( 'index.twig', $context );

使用命名空间的类名

当前, 你可能仍会看到TimberPost()而不是Timber \ Post()。对于版本1, 所有Timber类均已命名空间, 因此从现在开始推荐的方法是在PHP中使用命名空间的类名, 例如Timber \ Term而不是TimberTerm。

但!在Twig中, 你仍将使用非命名空间版本:

{% set post = Post(post_id) %}

or

{% set post = TimberPost(post_id) %}

我希望这可以解决问题。

赞(0)
未经允许不得转载:srcmini » 我应该在单个wordpress模板中使用$post = Timber::query_post()还是$post = new TimberPost()?

评论 抢沙发

评论前必须登录!