我应该在单个wordpress模板中使用$post = Timber::query_post()还是$post = new TimberPost()()
我已经在Timber官方存储库中阅读到有关使用的一般性问题应在此处发布。
【我应该在单个wordpress模板中使用$post = Timber::query_post()还是$post = new TimberPost()()】我是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) %}
我希望这可以解决问题。
推荐阅读
- 在WordPress的循环中显示每个帖子的类别名称
- 我是否应该在自定义WordPress主题中使用div id =”page” class =”site”()
- WP以CPT标题为属性的短代码
- 智慧军营政治工作模块介绍
- Office365混合部署实战系列教程二(制定混合部署的迁移方案)
- 大厂面试官(JDK 线程池中如何不超最大线程数快速消费任务())
- 递归问题闲究——汉诺塔问题
- 用vue+eslint+vscode实现代码规范化
- 看动画学算法之:栈stack