wordpress - 如何在树枝模板(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,但我不确定这是如何完成的。
任何帮助将不胜感激。
解决方案
我正在做这样的事情 - 我的情况更容易,因为我想将所有图像重定向到一个博客(整个 WP Multisite 的一个媒体库)。
所以我还不能为你提供完整的答案,但也许我可以为你指出正确的轨道并分享我偶然发现的问题。
首先,我扩展了Timber\Image
,Timber\Post
和Timber\ImageHelper
.
在我的帖子类中,我刚刚更改了图像类(为我的)。
在 Image Class 中,您必须添加switch
并且restore
每次 WP 使用诸如wp_get_attachment...
etc 之类的功能时 - 所以每次将图像 ID 转换为 url/path 时。
在 ImageHelper 中,您必须使用_Operate
方法 - 还要添加switch
和restore
.
我仍然遇到的问题:
- ACF - 我添加了一个过滤器来切换到正确的博客
- 正如你所看到的 - 很多覆盖 - 更新将是有问题的
还要看看这两个插件:
- https://github.com/bueltge/multisite-global-media
- https://github.com/johnbillion/network-media-library
他们有一些不同的方法,所以也许它会以某种方式激励你。
推荐阅读
- reactjs - ReactJS 父子引用具有过时的子状态
- logging - 如何关联两个 JVM 的日志记录?
- javascript - 初学者问题 - 函数内部和外部的变量
- javascript - 如何使用点符号访问此对象数组中的嵌套值?
- python-3.x - 加载 __init__.py 时,有没有办法自动导入我文件夹中的所有模型?
- c# - C# 自定义控件访问器怪异
- php - laravel 过滤器返回所有记录
- javascript - (CSS) 影响 :hover 上的多个类
- cmake - 库目标的 target_link_libraries PRIVATE 语义
- redis - 有没有办法在 gRPC 服务器之间共享流连接