WordPress6.7主题语言包失效(已解决)

27天前 φ合肥 18

刚更新到WordPress 6.7,发现自己主题的语言包失效了。我换了其他几个主题也是一样,我也没看到更新日志有关于语言包的更新啊。怎么回事?又出bug了?


根据秋风于渭水obaby在评论区的反馈,我也测试了其他主题,发现确实是部分主题的问题。正好WPTEA也发现这样的问题,我以为也会帮到我,可没找到相关解决办法。

后来我发现,将load_theme_textdomain函数放在after_setup_theme外就能正常显示翻译,但是会提示“_load_textdomain_just_in_time 的调用方式不正确。 域的翻译加载触发得太早。翻译应该在 init 操作或之后加载.....”,所以这样做也不能解决问题,官方要求必须在init或after_setup_theme内。

wechat_2024 11 13_193628_611.png
load_theme_textdomain函数

经过三四个小时不断的测试,最终给我找到问题所在。所以这是主题的问题,而不是程序的问题。block-patterns.php和block-styles.php这是我借鉴WordPress默认的主题,因为提交官方主题库必须要有register_block_style和register_block_pattern的存在,即使对我来说一无是处。

RECOMMENDED: No reference to register_block_style was found in the theme. Theme authors are encouraged to implement new block styles as a transition to block themes.
RECOMMENDED: No reference to register_block_pattern was found in the theme. Theme authors are encouraged to implement custom block patterns as a transition to block themes.

然后我发现这两个位置,少了个符号“!”,因为按照逻辑来说,应该是如果没有什么什么,便注册什么什么。所以加上感叹号,问题就解决了。神奇吧!之前都没有验证过这个问题,却能正常显示。

wechat_2024 11 13_205842_910.png

虽然上面没有错误提示,但经过ZWW大佬一观,就发现问题所在了。其实我也想过,我抄的WordPress的主题代码,他们不至于犯这种错误啊。看到block-styles.php文件里,将这些函数放进init钩子,于是我照葫芦画个瓢,搞定。

wechat_2024 11 13_232023_348.png

18 条评论

  1. #1

    恩。嘿嘿。我是不愿意更新。不过锻炼技术能力。

    • @acevs 呵呵,有一种执念,看着更新却不更新会难受…

  2. #2

    刚更新到6.7,没发现语言包有问题,换了几个主题也问题。嗯,感觉如果不是子主题冲突的话,就是缓存问题

  3. #3

    我这玩意儿都自动更新的,貌似没啥问题啊

    • @obaby 经过好几个小时的折腾,终于被我找到原因了,是我主题的问题。

  4. #4

    感觉不太对,通常 function_exists 是用来检查是否有某个函数a,如果有就调用此函数a,你现在前面加‘!’,变成“如果没有函数a就调用函数a”感觉问题不在这。

    • @zwwooooo 嗯嗯,大佬不是感觉而是专业,一眼看出问题。确实register_block_style和register_block_pattern这两个是内置函数,不是自定义函数。
      那只能将这两个函数加在init钩子了。

  5. #5

    出现问题到解决问题,这个过程非常奈斯

  6. #6

    棒。看不懂。

  7. #7

    WordPress和Typecho两个版子都在用着的 Wp自动更新的 没啥大毛病 主要用的还是Ty 之前折腾太多次 身体不好了 后面难维护 都不敢轻易去改动了(是改动太麻烦了 太浪费时间了)哈哈

    • @刘郎 ty 还是很稳定的,很长时间才更新一次。我习惯了 wp,还好现在 AI 在这方面解决了不少问题。

  8. #8

    我刚更新了6.7,出现了部分错误,赶紧回退了

    • @段先森 应该是主题或者插件部分代码不适配了吧,可以在本地测试好了,再放上去。

  9. #9

    确实是wp程序本身的原因,有 文章说是为了契合国际化最佳标准改了核心代码导致。
    https://wptea.com/wordpress-6-7-chinese-translation-missing-fix/

    • @似水流年 嗯嗯 是的呢,我也看到了。感觉这一变化,使得代码更严谨了。