WordPress插件精简调用(推荐)

WordPress之所以这么受欢迎,这和它模板和插件资源众多是离不开的。一般的WordPress用户基本上都至少会装4,5个插件,而像老用户则有可能会装10多个甚至20之多。其中的某些插件会在Blog页面的head部分加入自己的js或者是css代码来实现特有的功能。以前曾经有人写过方法来合并JS和CSS文件来加快调用速度,1, 2, 3

但其实这些插件往往是针对不同页面的,这样我们便可以对此做出精简调用的处理。比如我使用中的阁微堂修订版本的Ajax Comment-Reply,它所实现的功能便是在留言时采用ajax的方式提交而不必刷新整个页面。这个功能只需要在单页日志或者是Page时实现,但插件本身却在wordpress的任何页面的head部分别调用了comment.js和comment.css两个文件。

我的处理是修改了插件的comment-reply.php文件,在最后删除了它默认加载的代码:
code
(coolcode插件竟然无法处理此代码,只好使用了图片)
这样便仅在post和page页面才会加载这两个js和css文件,而在首页和存档等页面便会省掉总共6KB的字节调用。同理你也可以针对自己使用的插件采用此方法来精简调用,而对于全局调用的插件则采用合并JS和CSS文件进行处理。

适用此精简调用方法的有众多和留言相关的插件,比如ajax留言,增加留言表情等等。同时也包括一些给日志提交网摘收藏的插件,像Add Bookmarks,Blog it等等,还有一些存档效果插件,比如af-extended-live-archive插件也可以仅在存档页面调用等等。

另外老版本的UTW也会在header中加入没多大用的js文件,建议更新插件。

  • 2007.08.17 02:40, kevin said:

    我用的是台湾mm版本的Ajax Comment-Reply,也可以这样修改吗?

    [Reply]

  • 2007.08.17 03:35, Eduardo said:

    這個方法很讚!
    直接在 header.php 判斷頁面的位置在決定是否執行

    我原本只有用在 sidebar.php 卻忘了 header.php 也可以這樣做
    halloyy 帥喔 :)

    [Reply]

  • 2007.08.17 08:49, zhang said:

    多谢你的修正,在下一个版本我会在commentreply_load_scripts里面加入判断语句。

    btw,如果想要更好性能,你可以把css里面的内容直接放到你的模板里面的style.css文件里面,这样可以少下载一个东西。另外,javascript可以移到页面的最后,比如放到footer.php里面

    [Reply]

    • 2007.08.17 09:35, hhalloyy said:

      css放到style.css里,那不还是在其它页面也加载了么?

      嗯,放到footer里更比较好。

      [Reply]

      • 2007.08.18 04:05, zhang said:

        那个css不多,如果你启用了压缩功能后那么点内容根本不值一提,放到一起比分成两个文件划得来。

        [Reply]

  • 2007.08.17 08:58, zhang said:

    btw, 你这里在IE下留言有问题,总是提示名字没填…

    [Reply]

    • 2007.08.17 09:32, hhalloyy said:

      我在IE下能够留言啊,就是reply时宽度有点不适。

      [Reply]

  • 2007.08.18 18:35, paopao said:

    这个方法不错,不过对于不少初级用户来说难了点^_^

    [Reply]

  • 2007.08.18 21:48, paopao said:

    不知道这一段代码能不能直接放在插件的源文件里呢?

    [Reply]

    • 2007.08.18 22:00, hhalloyy said:

      当然可以,不过那需要调用数据库来判断页面状态,难度会更大。
      而且对于像我这样使用静态页面的wp会失效。

      [Reply]

  • 2007.08.19 18:43, LUMiX said:

    请问 hhalloyy,你的管理员留言的绿色边框是怎么定义的?

    [Reply]

    • 2007.08.19 22:48, hhalloyy said:

      可以使用插件,我是在comments.php里加入了区分的代码。

      1. if ($c->comment_type == 'pingback' or comment_type =='trackback')
      2. $style = ' class="trackback"';
      3. else if ($c->comment_author_email == 'hhalloyy@gmail.com')
      4. $style = ' class="mycomment"';

      然后输出留言时采用了这样:

      1. <li id="comment-<?php echo $c->comment_ID ?>" <?php echo $style?>>
      2. 调用留言部分

      [Reply]

      • 2007.08.20 17:27, LUMiX said:

        自己添加代码对我这外行来说还是有点难度~
        我去找插件试试。还是谢谢你的解答!

        [Reply]

  • 2007.08.21 13:47, iHao said:

    好方法,一直在sidebar用,没想这些函数用在header中也有如此妙的功能.呵呵.
    不过我的做法是将所有css集中,js一个不留全不用.

    [Reply]

  • 2007.08.27 10:14, AvP said:

    我对这种始终持保留态度,插件应该尽量做到来去无影,有时候一改,插件一旦失效,页面马上就要出错;

    以文中提到的情况为例,去掉add_filter后,那个输出CSS,JS的commentreply_load_script()还是可以继续用的嘛,加个判定函数是否存在语句就行了,这样就算卸载这插件也没关系。

    至于合并CSS,JS文件。。。。过一个年回来估计你就忘了啥是啥了。

    [Reply]

    • 2007.08.27 14:14, hhalloyy said:

      哇,高手终于又出现了啊。消失了2年了吧。。。

      [Reply]




*You must say some Chinese, or just copy 你好! as begin.

2007-08-17