WordPress的模板,琳琅满目,各式各样风格的模板都有。要对模板进行挑选,就免不了在wordpress后台不断的安装、启用、更换模板。但是老薛主机小编今天遇到了一个这样的问题:客户在挑选模板的时候,更换回原模板发生了这样的报错:
Fatal error: Cannot redeclare __popular_posts() (previously declared in /home/amjpqbuxys/domains/989852.com/public_html/wp-content/themes/081/functions.php:435)in/home/amjpqbuxys/domains/989852.com/public_html/wp-content/themes/081/functions.php on line 694
从报错的内容来看,是模板“081”中的functions.php文件出现了问题。了解到客户的模板是从网上下载的,老薛主机小编从客户那里拿到了模板的源文件,用其中的functions.php文件对空间的文件进行了替换,问题解决了。原来是functions.php文件的问题。就在小编本以为仅仅是这个文件被客户了,而准备结束这次售后的时候,问题又再次出现了。还是和上面一样的问题。而客户只是启用了一下其他的模板,然后启用回来就出问题了。
对于这个问题,老薛主机小编进行了分析:如果仅仅是对模板进行了替换就出现了问题,会不会是functions.php中,有这样一段代码,实现了这样的功能:如果启用其他模板,就会对functions.php中添加一段代码,而导致文件报错呢?
带着这样的思考,小编开始了网络寻找答案的过程。果不其然,在wordpress的一些模板中,存在这样的bug:
在启用过这个模板a之后,如果再更换启用到其他正常的b模板,就会将a的functions.php文件中的一部分内容写到b的functions.php中,从而导致b的functions.php中有多个同样的函数名存在,那么wordpress就会报错了,因为无论是前台还是后台,都需要通过当前主题的设置来加载主题。
知道了问题的原因,小编又仔细询问了客户,最近下载了哪个模板。果然,其他的模板互相切换都不会有问题,当切换到那个模板,也就是上面说到的a模板时,再切换到其他模板,就会把其他模板搞坏了。
揪出了这个罪魁祸首,老薛主机小编也长叹了一口气。也希望一些wordpress的模板开发者,对自己开发的模板多多做测试,认真负责,不要再出现这样还会损坏其他模板的bug了。