所以我对 PHP 很陌生,并且在传递字段名称时遇到了一些麻烦。
我正在使用自定义字段(cfs)并在 twig 中编写 php。
目前,我只有在我的 page.twig 中。想法是,如果在 Wordpress 中设置了图像,则图像将显示在 page.twig 中设置的位置。
字段名称是header_image
{%if header_image %}
{{header_image}}
{% endif %}
使用 Timber 时,您可以轻松地将变量从 PHP 控制器传递到 twig 视图。有两种方法可以做到这一点:
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 名称是您在自定义字段套件中调用的名称。
最后:
这{% if header_image %}
很好,因为这将检查是否设置了变量,然后决定是否显示该块。但是,在 CFS 中,上传图像时,您可以选择File URL或Attachment ID。这意味着您需要在 twig 文件中处理此结果。
例如,通过选择File URL,您将需要输出{{header_image}}
为:
<img src="{{header_image}}" />
然后,您可能还想根据在 Wordpress 媒体库中设置的图像 alt 文本添加 alt 属性。