如果使用 Timber 摘录为空白,则 post 预览为空
Make post preview empty if excerpt is blank with Timber
我之前在 vanilla Wordpress 中解决过这个问题,但是如果摘录字段为空,我似乎无法找到使 post.preview 对象保持空白的方法。尽管四处搜索,但似乎没有人发现这是一个问题!
无论如何,我已经根据我以前的方法想出了一个解决方法,在我的逻辑文件中设置一个变量供 twig 模板使用,这很简单,其他人可能会觉得有用。只是想看看我是否遗漏了 Timber 中可能存在的东西。
这是我使用的解决方案,它被放置在page.php
$excerpt = '';
if ( ! has_excerpt() ) {
$excerpt = '';
} else {
$excerpt = get_the_excerpt();
}
$context['post_excerpt'] = $excerpt;
从 PHP 7 开始,这也应该按预期工作,并且是一个更简洁的解决方案:
$context['post_excerpt'] = get_the_excerpt() ?? '';
??
运算符称为 'Null Coalescing Operator'。您可以在 official PHP docs.
中找到更多相关信息
另一种解决方案是在您的树枝模板中直接在 post class 上使用木材 "preview" 方法:
{{ post.preview }}
您可以在官方 Timber 文档中找到更多相关信息。
post_excerpt
已经是 Timber\Post
的 属性。如果 post 在您的上下文中,您可能不需要为此添加另一个变量。
要采用更“Timber-esque”的方式做事,请访问对象之外的 属性,而不是在上下文中设置另一个变量。
{# page.twig *}
{% if post.page_excerpt %}
{{ post.preview }}
{% endif %}
这也减少了对全局变量的依赖(如 has_excerpt()
或 get_excerpt()
),因此在其他模板或文件中重用此代码变得更加容易。
我之前在 vanilla Wordpress 中解决过这个问题,但是如果摘录字段为空,我似乎无法找到使 post.preview 对象保持空白的方法。尽管四处搜索,但似乎没有人发现这是一个问题!
无论如何,我已经根据我以前的方法想出了一个解决方法,在我的逻辑文件中设置一个变量供 twig 模板使用,这很简单,其他人可能会觉得有用。只是想看看我是否遗漏了 Timber 中可能存在的东西。
这是我使用的解决方案,它被放置在page.php
$excerpt = '';
if ( ! has_excerpt() ) {
$excerpt = '';
} else {
$excerpt = get_the_excerpt();
}
$context['post_excerpt'] = $excerpt;
从 PHP 7 开始,这也应该按预期工作,并且是一个更简洁的解决方案:
$context['post_excerpt'] = get_the_excerpt() ?? '';
??
运算符称为 'Null Coalescing Operator'。您可以在 official PHP docs.
另一种解决方案是在您的树枝模板中直接在 post class 上使用木材 "preview" 方法:
{{ post.preview }}
您可以在官方 Timber 文档中找到更多相关信息。
post_excerpt
已经是 Timber\Post
的 属性。如果 post 在您的上下文中,您可能不需要为此添加另一个变量。
要采用更“Timber-esque”的方式做事,请访问对象之外的 属性,而不是在上下文中设置另一个变量。
{# page.twig *}
{% if post.page_excerpt %}
{{ post.preview }}
{% endif %}
这也减少了对全局变量的依赖(如 has_excerpt()
或 get_excerpt()
),因此在其他模板或文件中重用此代码变得更加容易。