wp-magazinetheme-chinese杂志型主题,显示内容丰富、时尚、美观。cos-html-cache全站静态化插件,将你的网站页面全部转为html静态文件,使网页载入速度得到提升的同时方便搜索引擎更好的收录。一个主题,一个插件,看似不大噶的东西合在一起却出了问题。
使用wp-magazinetheme-chinese后,cos-html-cache失效。联系了cos-html-cache的作者江东,它也提出了一些建议,不过结果仍然一样。后来他发给我一段用来调试php的代码,就是利用这段代码,终于找到的问题的所在。代码如下:
- function debug($str){
- $fp = fopen(ABSPATH."/debug.txt","w");
- fputs($fp,$str);
- fclose($fp);
- }
这段代码会将$str输出到网站根目录的debug.txt文件中(还是静态语言的调试器好啊!)。仔细读了一下cos-html-cache.php的代码,了解到对页面是否进行静态化是根据一个特定的html注释决定的。
- function cos_cache_ob_callback($buffer){
- if( !substr_count($buffer, ‘<!–cos-html-cache-safe-tag–>’) ) {
- return $buffer;
- } elseif( SCRIPT_URI == CosSiteHome) {// creat homepage
- ……
if( !substr_count($buffer, ‘<!–cos-html-cache-safe-tag–>’) )判断$buffer(当前页面代码)中是否包含<!–cos-html-cache-safe-tag–>,如果不包含就直接退出静态化操作。
- function CosSafeTag(){
- debug("–a");
- if(is_single() || is_home()) {
- debug("–b");
- echo "<!–cos-html-cache-safe-tag–>";
- }
- }
- add_action(‘get_footer’, ‘CosSafeTag’);
CosSafeTag方法判断当前页为首页或文章页时,向客户端输出<!–cos-html-cache-safe-tag–>字符串(原来如此),add_action方法将get_footer和CosSafeTag绑定,当系统调用get_footer方法时(加载footer.php),CosSafeTag不能也被调用。我在其中加了两句输出语句,若debug.txt输出了“–a”,则表示CosSafeTag方法已经被调用。若输出了“–b”则表示is_single和is_home返回true。最终测试结果debug.txt文件中仅输出了“–a”,也就是说is_single和is_home返回了false。
为了进一步确定是否为is_single的问题,在footer.php中加入了如下代码,当前页为文章页时输出“******”。
- <?php if (is_single()) { ?>
- ******
- <?php } ?>
进入文章页,“******”没有被输出。这个问题暂时先搁一搁,cos-html-cache失效的问题已经弄清楚了,原因就是页面中没有<!–cos-html-cache-safe-tag–>导致退出静态化页面操作。解决也当然很简单,直接在single.php和index.php文件的最后加入<!–cos-html-cache-safe-tag–>即可。
这的确是很奇怪的问题,主题中还有很多地方用到了is_home和is_single方法,也都正常。甚至在正常的is_home文件中自己加个is_home,结果仍然返回false。不知你有没有遇到这种情况呢?
我也在用这个插件,出现一个情况不知道是不是你说的这个。因为网上有人说这个插件会让从侧边栏的什么什么失效…= =!忘记了。
—————
问题描述:
比如我一篇文章的地址是:http://www.icefifi.com/xhtml/finally-opened-wp-blog.html
姑且这篇文章叫《开通博客》。
然后博客右边栏会有“最新评论”这个小工具,访客“xxx”阅读《开通博客》这篇文章并且留言评论后,“最新评论”会显示出最新的动态:“xxx 在《开通博客》的最新评论”
再然后,点击:“苍井空 在《开通博客》的最新评论”这个链接,会打开页面并且显示到 该文章的 该访客的 评论位置。(这个最新评论是不是动态生成的??)
页面地址也会变成:http://www.icefifi.com/xhtml/finally-opened-wp-blog.html/comment-page-1#comment-23
“comment-page-1#comment-23”应该是该文章的描点位置吧。
—-问题就出在于:
这个评论地址往往不可用,谷歌浏览器打开是显示:
【Not Found
The requested URL /xhtml/finally-opened-wp-blog.html/comment-page-1 was not found on this server.】
ie6的是
【找不到网页
您要查看的网页可能已被删除、名称已被更改,或者暂时不可用。
】
—我在博客后台,用这个插件删除文章缓存之后,这些评论链接才可用,但是过不了多长时间,评论链接又不能用了。
很是郁闷啊~~~今天无意间看到了你的文章,希望能得到帮助解答!不胜感激!
你的最新评论用的插件还是wordpress自带的?
兄台你的回复留言没有设置邮件提醒吗?
最新评论用的是主题自带“小工具”
WordPress在提交某一页面时会对url进行分析,使用cos-html-cache后,会中断这个分析过程而直接打开生成的html文件,所以会出现这种问题。