将字段名称从 CFS wordpress 插件传递到 twig

Passing a field name from CFS wordpress plugin through to twig

所以我是 PHP 的新手,在传递字段名称时遇到了一些问题。

我正在使用自定义字段 (cfs) 并在 twig 中为 php 写作。

目前,我的 page.twig 中只有一个。这个想法是,如果在 Wordpress 中设置了图像,图像将显示在 page.twig 中设置的位置。

字段名称是header_image

{%if header_image %}
  {{header_image}}
{% endif %}

使用 Timber 时,您可以轻松地将变量从 PHP 控制器传递到树枝视图。有两种方法可以做到这一点:

1) 在functions.php中,您可以将变量全局传递给上下文。 Timber Starter 主题中有这个供参考。您的 add_to_content 函数应如下所示:

function add_to_context( $context ) {
    global $cfs;

    $context['header_image'] = $cfs->get('header_image');

$context 视为一个巨大的变量,它通过您的变量进入实际视图。

记住: 这使您的变量可以全局访问,因此您需要为您的 CFS id 命名。例如 global_phone_number.

2) 为了更好地构建代码,您应该通过该页面的控制器将变量传递给上下文。这有助于确保您不会传递未使用的变量。

在您的 page.twig 文件中,您需要添加:

$context['header_image'] = $cfs->get('header_image');

记住: $context 名称是您在 twig 文件中使用的名称,$cfs 名称是您在 Custom Field Suite 中的名称。


最后:

这个{% if header_image %}很好,因为这个会检查一个变量是否已经设置,然后决定是否显示这个块。 但是,在 CFS 中,当上传图像时,它会让您选择 select File URLAttachment ID.这意味着您需要在您的 twig 文件中处理这个结果。

例如,通过选择文件URL,您需要将{{header_image}}输出为:

<img src="{{header_image}}" />

然后您可能还想根据 Wordpress 媒体库中设置的图像替代文本添加 alt 属性。