把这次调查问题的思路整理一下,看看对各位WP玩家能否有所帮助。
从搬家以来,WP Code Highlight就一直存在显示问题。上插件官网报个问题吧,给设置评论审核了,也没个回应。
癣疥之疾,一直没当回事。直到上午不宜乐乎兄弟再次指摘,才又抽空找了一下原因。
1、定位调查方向
本地模拟环境下,单独只运行一个插件,没问题。在服务器上换主题,仍旧出现问题。
所以把目标锁定在插件冲突上。
2、确定原因
分别保存下能正常显示和不能正常显示的时候,两组pagesource。通过对比发现,WP Code Highlight用于分行的span标签被意外干掉了。
比较工具:WinMergeU。
3.查找元凶
推论是,这是某个对the_content的内容进行动作的插件干得好事!
在所有插件中搜索“the_content”。发现仅有四个插件对the_content进行了过滤。
逐个Disable/Enable插件,试图锁定问题插件。这时发现了一个奇怪的现象:NextGEN Gallery和BJ Lazy Load不能同时共存,但单独运行其中一个都不会导致问题发生。
4.解决问题
这时,问题反而清晰了。NGG Gallery对BJ Lazy Load的某个特殊处理,导致了WP Code Highlight添加的tag无效。
再次在NGG Gallery中搜索the_content,发现罪魁祸首在module.third_party_compat.php的第364行:
function bjlazyload_filter($content) { return trim(preg_replace("/\s\s+/", " ", $content)); }
看到了吧:这个函数起作用的话,就会把尖括号中间的span给干掉!
最简单的改法就是把
return trim(preg_replace("/\s\s+/", " ", $content));
改成
return $content;
但是这样改似乎并不太好。最理想的状态是干掉那个filter,就是干掉这一句所产生的后果。
add_action('wp', array(&$this, 'bjlazyload'), PHP_INT_MAX);
NGG又做得太绝了一点,把这句添加的时机放在了最后。而本人学艺不精,并不清楚“wp”后面的动作是什么。所以没想到在function.php中阻止它的好办法。
所以只好把这一行注掉。
大功告成。
最后再总结一下结论给通过关键字搜索来的朋友:
WP Code Highlight只显示一行的一个原因是:
WP Code Highlight与NextGEN Gallery,BJ Lazy Load有冲突。
解决方法是:
注掉\nextgen-gallery\products\photocrati_nextgen\modules\third_party_compat\module.third_party_compat.php第81行
add_action('wp', array(&$this, 'bjlazyload'), PHP_INT_MAX);
我说读的少“指摘”不是贬义词吧?
是中性词.对日开发天天用.指摘多了就是贬义词.
话说,你装那么多插件干什么呢?
玩啊.博客不就是为了玩么.
有现成儿的干嘛还要自己费劲写
费劲折腾不真好有的玩么,嘿嘿。
发现提交评论后字体会变大,然后评论框会变形,input输入框变大。
chrome吧.
知道,但没空研究.
谢谢.
我试试Firefox。
博主牛。找到问题,解决问题,如此利索。
关键是时间.我总喜欢在单位的时候不务正业地折腾博客,在家的时候却一点儿激情都没有.
牛人,有耐心,读代码是最闹心的事儿,尤其是读别人写的
一边读一边骂:tmd不写注释,tmd不会分个行…
居然换主题了,哈哈哈。
这个主题非常非常有意思,制作者提供了100多个钩子出来,可以随意发挥.
这么牛逼?有空要下下来研究研究。
但是你新的模板让我顺眼多了,你以前那个模板太凶残了,好堆积的!
以及我都没什么插件,因为一般插件就是增加服务器负担,其次就是容易互相冲突
啥叫堆积?跟密集恐惧症是一回事不?
我还是一名坚定的插件党.
说的好听是堆积,说的难听就是乱七八糟……
跟密集恐惧症两回事
你上一个模板,模板本身的背景图片颜色很多
而你自己日记的封面,也是各种色调的图片
色调一不统一,就会使得画面看起来就好杂乱,尤其你之前模板的主色调还是暗色调,看起来更乱……