You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

WordPress多站点使用Timber搜索时post.link返回错误URL如何解决

WordPress Timber多站点跨站搜索链接错误修复

问题描述

在使用Timber的WordPress多站点环境中,搜索表单可正确返回全站点匹配的文章/页面结果,但调用{{ post.link }}输出链接时,链接前缀会被替换为当前站点的URL,而非文章所属站点的正确URL。

复现场景:

  • 站点1地址:test.com/,名下存在页面foo,正确URL为test.com/foo
  • 站点2地址:test.com/2/
  • 在站点2内搜索关键词“foo”时,{{post.link}}返回错误地址test.com/2/foo,访问触发404错误

修复代码

1. 搜索结果模板(search.twig)

在循环输出搜索结果时,先切换到文章所属站点获取链接,输出完成后切回当前站点即可:

{% for post in posts %}
  {% do fn('switch_to_blog', post.blog_id) %}

    <h2>{{post.title}}</h2>
    {{post.preview}}
    <a href="{{post.link}}">Read More</a>

  {% do fn('restore_current_blog') %}
{% endfor %}

2. 搭配Relevanssi插件的搜索表单代码

如果使用Relevanssi插件实现多站点搜索,可参考以下表单代码:

<form role="search" method="get" id="searchform" class="searchform" action="{{site.link}}">
    <input type="text" value="{{ function('get_search_query') }}" name="s" id="s" placeholder="Search..." />
    <input name="searchblogs" type="hidden" value="39, 0">
    <input type="submit" id="searchsubmit" />
</form>

注意事项

如果searchBlogsById表单字段仅填入1个站点ID,{{ post.blog_id }}会返回null,可在值后新增不存在的站点ID0规避该问题。


内容的提问来源于stack exchange,提问作者harceo

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.05 18:15:04