• WordPress主题自带Widget翻译无效解决方法

    问题描述

    最近在将前些天做的zAlive主题优化,准备向WordPress官方目录提交,优化过程中不可避免的要将主题国际化(翻译,多语言)。问题出来了:语言包制作好之后,前台页面的翻译没问题,但是后台Widget中主题添加的Widget没有翻译过来。

    解决过程

    起初我只注意到Widget没有翻译过来,于是就向谷歌求救,结果一无所获,然后又翻看WordPress国际化方案,当看到I18n for widgets developed on 2.8+ 时以为Widget的翻译需要用load_plugin_textdomain这个函数,而非load_theme_textdomain。但是事实也并非如此,在我尝试了好多次之后翻译依然无效。

    毫无头绪的我着实懵了,后来在无意中点击到了菜单设置页面,发现菜单也没翻译过来,我就在想是不是所有的主题都这样,WordPress本身就这样?于是将主题切换为WordPress自带的Twenty Twelve,而Twenty Twelve中无论Widget还是菜单翻译都没问题,英文环境下Widget和菜单都是英文,中文环境下Widget和菜单都是中文。看来是我的主题哪里不对劲!

    打开Twenty Twelve的functions.php 发现load_theme_textdomain的调用在add_action( ‘after_setup_theme’, ‘twentytwelve_setup’ );中的twentytwelve_setup函数最上方。对比我的zAlive主题中的functions.php发现我用的是add_action( ‘init’, ‘zAlive_theme_setup’ ),看来问题就在这里,我又打开WordPress Action_Reference发现init在after_setup_theme之后。

    WordPress Action

    WordPress Action

    总结

    Widget以及菜单翻译问题在我将init修改为after_setup_theme后解决了,看来问题就是action的执行顺序造成的,大家以后在做主题的时候还是用after_setup_theme好了

  • 上课迟到怎么办?

    上课迟到绝招

  • Linode免费升级双倍存储空间

    Linode logo

    Linode blog 7月25日消息:Linode全线VPS存储空间免费翻倍!登录Linode控制面板后点击右边栏的Upgrade即可。

  • 金毛照片两张,顺带求领养金毛幼崽~

    今天出去给老爸帮忙,然后去的那家养了条金毛,大大的~~软软的~~黄黄的~~~好萌,然后就拍了两张照,哈哈~~

    另外呀,谁有金毛幼崽可以送的呀,有的话就太好啦啦啦~~~

  • zAlive主题上线测试

    2013.09.10更新:主题在8月22已经通过官方审核并上线,更多详情戳这里啦:zAlive主题


    一直都在给自己说做一款自有主题,赶紧完工,赶紧赶紧,最终还是拖了这么久,不过今天也终于上线测试了。

    zAlive主题特点

    绿色+黑色搭配,两栏,响应式布局(bootstrap)

    丰富的后台选项(幻灯片设置、广告代码、摘要设置、版权设置)

    右边栏可选主题内增加的widget(带头像最新评论、热门文章、随机文章等)

    自定义菜单