如果使用 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() ),因此在其他模板或文件中重用此代码变得更加容易。