今天看到更新通知,WordPress升级到了3.7。更新为3.7后却出现了一个问题:「Warning: sprintf() [function.sprintf]: Too few arguments in /home/***/public_html/wp-admin/theme-editor.php on line 33」
打开这个theme-editor.php,在33行发现代码是如此的
<p>' . sprintf( __('Upgrading to a newer version of the same theme will override changes made here. To avoid this, consider creating a <a href="%s" target="_blank">child theme</a> instead.'), __('http://codex.wordpress.org/Child_Themes') ) . '</p>' .
这行代码过少,总起来意思是如果修改主题时,如果在父主题上直接修改,主题的更新会把修改过的地方又重置。因此为了避免这种情况,建议使用子主题修改。
对比了WordPress 3.6 的theme-editor.php,发现33行的代码是这样的
<p>' . __('Upgrading to a newer version of the same theme will override changes made here. To avoid this, consider creating a <a href="http://codex.wordpress.org/Child_Themes" target="_blank">child theme</a> instead.') . '</p>' .
其实另一站点上午也升级过3.7,但是英文版,当时中文版未出。升级完毕并未出现这种情况。
两者最大的差异在于a href="%s"。我想这个代码的意思是显示为中文,可惜这一行及其周围的代码只是主题修改时的帮助文件说明,无多大实际作用。
不管它了,把3.7这行代码改成了如下这样,问题就没再出现
<p>' . sprintf( __('Upgrading to a newer version of the same theme will override changes made here. To avoid this, consider creating a <a href="http://codex.wordpress.org/Child_Themes" target="_blank">child theme</a> instead.') ) . '</p>' .