首页 > 解决方案 > 如何在树枝模板(Timber\Image 对象)中渲染来自相邻多站点博客的图像

问题描述

无济于事,我一直在搜索 Timber 文档,以确定如何在主博客的树枝模板中呈现来自相邻多站点博客的图像。

传递给 twig 模板的 posts 数组是通过一个调用 的扩展的循环构造的Timber\Post,在此期间,一些帖子使用switch_to_blog(2)+处理restore_current_blog()。从博客 ID 2 检索到的帖子数组中的帖子包含所有正确和预期的数据,包括Timber\Image对象。

array (size=9) ... 5 => array (size=15) 'ID' => int 7528 ... 'image' => object(Timber\Image)[4256] ... public 'ID' => string '8541' (length=4)

但是,当 twig 模板呈现帖子数据时,它使用的是针对主博客的图像 ID (8541),而不是与图像关联的博客(即博客 ID 2)。结果当然是使用来自其他博客的图像 ID 从主博客调用显示的图像。

我希望在遍历帖子数组时,Timber\Image需要切换到另一个博客 ID,但我不确定这是如何完成的。

任何帮助将不胜感激。

标签: wordpressmultisitetimber

解决方案


我正在做这样的事情 - 我的情况更容易,因为我想将所有图像重定向到一个博客(整个 WP Multisite 的一个媒体库)。

所以我还不能为你提供完整的答案,但也许我可以为你指出正确的轨道并分享我偶然发现的问题。

首先,我扩展了Timber\Image,Timber\PostTimber\ImageHelper.

在我的帖子类中,我刚刚更改了图像类(为我的)。

在 Image Class 中,您必须添加switch并且restore每次 WP 使用诸如wp_get_attachment...etc 之类的功能时 - 所以每次将图像 ID 转换为 url/path 时。

在 ImageHelper 中,您必须使用_Operate方法 - 还要添加switchrestore.

我仍然遇到的问题:

  • ACF - 我添加了一个过滤器来切换到正确的博客
  • 正如你所看到的 - 很多覆盖 - 更新将是有问题的

还要看看这两个插件:

他们有一些不同的方法,所以也许它会以某种方式激励你。


推荐阅读