书接上回,打算把iNove全部的拆开心得写上,直接的代码我是不会展示的,因为授人鱼不如授之渔。
这回送死的是 comments.php【小声嘀咕,我运气真背…】
或许你和我同样第一眼看到的一个主过程便是它了。
<?php $options = get_option('inove_options'); // for WordPress 2.7 or higher if (function_exists('wp_list_comments')) { $trackbacks = $comments_by_type['pings']; // for WordPress 2.6.3 or lower } else { $trackbacks = $wpdb->get_results($wpdb->prepare("SELECT * FROM $wpdb->comments WHERE comment_post_ID = %d AND comment_approved = '1' AND (comment_type = 'pingback' OR comment_type = 'trackback') ORDER BY comment_date", $post->ID)); } ?> |
这里MG为了通吃wordpress,或者说照顾有念旧情节的朋友,做了一个判断,
我的WordPress 2.7 or higher,所以我就直接把这种判断删除了,留言肯定会执行的就好,这么一来,便少了编译器的一次判断,一次不明显,如果嵌套10次以上的话,当然只是举个例子。修改后的或许会变成这个样子。
<?php $options = get_option('inove_options'); $trackbacks = $comments_by_type['pings']; ?> |
这种兼容性的过程还有很多,包括一些插件以及旧的API函数中哦。
<?php if(pings_open()) : <a id="commenttab" class="curtab" href="javascript:void(0);" onclick="MGJS.switchTab('thecomments,commentnavi', 'thetrackbacks', 'commenttab', 'curtab', 'trackbacktab', 'tab');"> _e('Comments', 'inove'); echo (' (' . (count($comments)-count($trackbacks)) . ')'); ></a> <a id="trackbacktab" class="tab" href="javascript:void(0);" onclick="MGJS.switchTab('thetrackbacks', 'thecomments,commentnavi', 'trackbacktab', 'curtab', 'commenttab', 'tab');"> _e('Trackbacks', 'inove'); echo (' (' . count($trackbacks) . ')'); ></a> ?> |
又看到这种兼容性很高的国际化语句了,俺们要的是速度咯,改。
<?php <a id="commenttab" class="curtab" href="javascript:void(0);" onclick="MGJS.switchTab('thecomments,commentnavi', 'thetrackbacks', 'commenttab', 'curtab', 'trackbacktab', 'tab');">评论数 ( echo ((count($comments)-count($trackbacks))); >) </a> <a id="trackbacktab" class="tab" href="javascript:void(0);" onclick="MGJS.switchTab('thetrackbacks', 'thecomments,commentnavi', 'trackbacktab', 'curtab', 'commenttab', 'tab');">引用数 ( echo (count($trackbacks)); >) </a> ?> |
当然类似的还有很多,参考上面的方法你的显示速度应该会有所提高。在参照上面的方法修缮了许多代码之后,我们又看到了一个这样的过程
<?php<li class="trackback"> <div class="date"> printf( __('%1$s at %2$s', 'inove'), get_comment_time(__('F jS, Y', 'inove')), get_comment_time(__('H:i', 'inove')) ); | <a href="#comment- comment_ID() >"> printf('#%1$s', ++$trackbackcount); ></a> </div>?> |
这个也是多个函数嵌套的实现方法,某些时候,结构越是简单,效率越高。
于是改为
<?php <li class="trackback"> <div class="date"> echo get_comment_time('F jS, Y 于 H:i'); > | <a href="#comment- comment_ID() >"> printf('#%1$s', ++$trackbackcount); ></a> </div> ?> |
接着向下看,又看到了一个熟悉的东西,还是复习一下吧
<?php printf(__('You must be <a href="%s">logged in</a> to post a comment.', 'inove'), $login_link); ?> |
<?php 文章仅允许本站注册用户进行评论,<a href=" echo $login_link; >">点此注册</a>。 ?> |
是不是直接脱去了两层函数呢,一层是语言包,一层是变量合并。
继续往下看:很多人想搞一个和MG评论回复一样的效果,看看本文末端的评论表情就知道是啥了。
但是却不乏失败的…主要原因是因为你没有开启转换表情,导致函数数组为空,从而无法获取表情。
详细的可以看http://promiseforever.com/2009/05/11/wordpresshighslide4wp-hotfix.html
这篇是我写的WordPress]highslide4wp 插件补充,
<?php if (function_exists('highslide_emoticons')) : <div id="emoticon"> highslide_emoticons(); ></div> endif; ?> |
已经和MG反馈了,MG说这个是一个BUG…
如果你不启用这个插件的话,那么可以直接把上面的语句删除。
如果你怕你哪天不小心把表情转换点没了,造成程序bug,那么修改成下面的样子。
如果你不确定的话,那么也这样修改一下吧。
<?php <span class="block" style="margin-left: 0px! important;"><code class="plain"> if ((function_exists('highslide_emoticons')) && get_option( 'use_smilies' )): <div id="emoticon"> highslide_emoticons(); ></div> endif; ></code></span> ?> |
待续….



支持一下!
楼主什么时候解决一下这个语法高亮的插件在IE6下显示要有问题的问题?
我的“相关文章”一直都成功不了,真是让人难过啊,这对SEO和用户体验有不小的影响啊
很牛。。。应该写个什么教程的,肯定会火
@万戈
呵呵,似乎你才是高手的说~
很详细,高手啊,支持
苦心人天不负.那个代码你直接打开网页源文件,复制到你的站里就可以用了哦~不过记得要下载图片,我设置了防盗链..
我比较喜欢文章下面那二块内容,文章地址和书签。
代码优化对 我来说是很难的事情,我的也在国内,还 是就这样了。
@simaopig
程序改完之后css和js还有很多未完成的东西…我是累的不想继续搞了…
呵,的确不错。因为我现在用国内主机了,这些细节都没有改。
嗯。该走语言包的还走语言包。嗯。看来,这周末真的应该把皮肤升至1.4然后大刀阔斧的改一下了。也许会好很多。嗯。。
向你学习。
PS:沙发我占了哈。嗯。嘿嘿。