wordpress-plugin几个月前,我对WordPress还不甚了解,想学习写插件,看文档好累,就下载一些现成的插件学习。当时最不明白的事就是为啥插件下面有那么多目录,WordPress怎么就能识别插件?那一堆文件都是做什么用的?

 

WordPress如何识别插件

了解这个让我恐惧的心平和了很多,WordPress识别插件和它识别主题的原理相同,通过文件头部的声明,而带有这个声明的文件就是WordPress插件的主文件,插件可以简单到只有一个主文件,甚至不需要一个插件目录。

<?php
/*
Plugin Name: Name Of The Plugin
Plugin URI: http://URI_Of_Page_Describing_Plugin_and_Updates
Description: A brief description of the Plugin.
Version: The Plugin's Version Number, e.g.: 1.0
Author: Name Of The Plugin Author
Author URI: http://URI_Of_The_Plugin_Author
License: A "Slug" license name e.g. GPL2
*/
?>

最简单的插件就是WordPress自带的Hello Dolly,只有一个php文件。

为何插件下要有很多目录

越是复杂的插件目录结构越繁琐,有的甚至出现三级以上的目录,让想修改它的人望而生畏。如何组织插件的目录结构完全是个人喜好问题,有的人会把几千行代码塞进一个主文件,让你不用纠结某些功能要去哪里找。也有的人会将几千行代码按照模块思想分割成不同的文件,在主文件中玩include游戏。

我现在知道如何组织插件是个人风格的问题,不是WordPress的问题,但第一次看到插件复杂的目录结构时,我以为写WordPress的插件很难很难,竟然有这么复杂的结构,目录结构的标准在哪里?我该从何开始?

文件代码太长让人看着累,文件夹太多找的累。图片、js或者css文件可以分别放在各自的目录,php文件可以按照功能类别划分,不是太复杂的就都放在根目录下,文件名反应文件用途就可以。例如这样的结构

pluginname/
pluginname/mainfile.php
pluginname/inc/supportingcode-1.php
pluginname/inc/supportingcode-2.php
pluginname/Readme.txt

这不是必须的,但组织更有调理,读起来更方便。

最佳的模式就是让想修改插件的人一眼看去,就知道组织文件的思路,就知道哪些功能该去哪里找。

如何组织插件是个人问题,如何让插件更容易理解是我们要追求的。

插件 vs. functions.php

这个问题快被说烂了,很多人觉得插件用多了会拖慢网站性能,所以把插件的代码扒出来丢进functions.php,于是一款功能复杂的“高级主题”诞生了。前一段时间,我也拼命追求这种方式,尽管我努力把functions.php组织的有条理,尽管我把不同功能的代码放到不同文件,并用文件夹组织起来,当我想到更换主题时,还是不禁的打了一下寒颤。

用插件实现功能,更换主题不过是点两下鼠标,用主题实现很多功能,不仅要拷贝代码,还要确保这些代码不会与新主题冲突。

从文章第一节所述就知道,插件和functions.php的代码区别真的不大,只不过插件需要自己的声明,需要一个数据库字段记录哪些插件激活,插件代码执行的位置与functions.php不同。把插件代码拷贝到functions.php中真的能让网站提速很多?还是由此损失掉的可移植性更令人惋惜?

所以,我需要改变一下行事方式,将与内容相关的功能做成插件,把与主题样式关系较大的功能放到主题中。例如,我对评论所做的过滤,放到插件中更合适。我给主题做的一个定制化比较强的文章目录导航,放到主题中更合适,因为这个功能放到别的主题里也没法用。SEO,我更倾向于用插件,这样更换主题时不用去考虑两个主题SEO的数据是否相同,关键词和描述变化大对搜索引擎是很不友好的。

5条留言

  1. 弄个子主题试试···

  2. 科班出身的 就是不一样,我接触WP都好几年了,还在菜鸟中混…

    1. 哈哈,我也是只在路上飞的小菜鸟而已,每次去wp answers混就觉得菜的不行

  3. 太厉害了。才几个月就可以写插件了!!

    1. 写插件跟写functions.php里的代码区别很大嘛,不大,哈哈,所以写插件估计谁学学都会,但写一个出色的插件就难了。

评论功能已关闭