WordPress插件样板101:如何开始

自从大约十年前WordPress插件问世以来,我们编写插件的方式并没有发生太大变化。有一个主插件文件,其标题基本上是Wild West。除了使用钩子之外,没有标准化的插件制作方法.


这不一定是问题。有许多不需要管理框架的简单插件,并且有些人可以编写完全一致的过程代码。也就是说,插件中的代码质量通常不是最好的,框架或方法将大大提高它的质量。.

在本文中,我将探讨一种可能的解决方案– WordPress插件样板. 它旨在作为插件开发的起点,这是创建标准化插件的面向对象的方式。由于它是按照OOP原则进行编码的,因此它主要供中级编码人员使用,但是即使您了解新手,也可以轻松使用它,即使是初学者。到本文结尾,无论您有什么编码经验,都应该了解什么是什么以及如何开始使用它.

通用文件结构

该样板旨在用作Github存储库,因此主目录包含通常在Github存储库中找到的文件。 README.md文件是常规自述文件,并作为说明显示在主存储库页面上。 CHANGELOG.md文件用于记录版本之间的更改,.gitignore文件用于设置git在使用文件时应忽略的文件.

插件名称是存储插件的主要文件夹。其结构遵循WordPress存储库,您可以 "报到" 该文件夹到SVN插件仓库。默认情况下,它包含资产文件夹(其中存储您的插件的图像和屏幕截图)和主干文件夹(其中包含该插件的代码).

主文件夹是包含插件的文件夹,您可以将此文件夹粘贴到WordPress安装中并激活您的插件。稍后我们将详细介绍该文件夹的内容。在此之前,我们先建立商店.

新插件

全部设置

将所有这些文件夹和SVN / Git很棒都放在一个地方很好,但是如何实际使用呢?您无法将整个文件夹直接检入您的plugins文件夹,这根本行不通。仅检出主干目录很麻烦,而且您将无法访问该目录之外的文件.

让我向您展示我最喜欢的设置方式。我的计算机上有一个具有以下结构的文件夹:

  • 的github
    • 最佳作者
    • 简单易用的图像
    • Twitter用户时间表
  • html
    • 管理员
    • wp内容
    • wp-includes
    • 其他WordPress文件
  • WordPress的
    • 最佳作者
    • 易于使用的图像
    • twitter-user-timelines

html文件夹是安装WordPress的位置。 github文件夹包含我来自Github的所有WordPress插件。 wordpress文件夹包含通过SVN从WordPress存储库中提取的相同插件.

创建符号链接

我要采取的第一步是在Github上创建WordPress版本的范本。然后,我将其签入github文件夹。接下来,我在WordPress安装的wp-content / plugins目录中的主干文件夹之间创建一个符号链接。.

符号链接是对文件或文件夹的引用,该文件或文件夹可以按您的预期解析为其目标。这样的最终结果是,如果您将插件从系统上的任何位置符号链接到WordPress目录,它将可以正常工作。这为您带来以下好处:

  • 您可以将插件存储在其他地方.
  • 您可以从较大的存储库中对文件夹进行符号链接.
  • 您可以将同一个插件符号链接到多个安装中.

从Windows上的终端或命令提示符轻松创建符号链接。我建议打开一个并导航到WordPress安装的plugins目录。然后,键入以下命令:

#对于OSX或Linux
ln -s / absolute / path / to / github / My-Plugin-Name / my-plugin-name / trunk my-plugin-name

#对于Windows
mklink / j C:\ absolute \ path \ to \ github \ My-Plugin-name my-plugin-name

这将创建从第一个路径到第二个路径的链接。第一个路径是Github存储库中主干目录的绝对路径。第二个只是当您已经在WordPress安装的plugins目录中时要链接到的文件夹的名称.

完成后,您将看到新插件出现,就像上图一样。我们需要自定义内容,但是现在我们的插件可以从Github存储库中运行,从而使开发成为 很多 更轻松.

重命名

中继目录中有很多文件夹和文件,让我们开始重命名它们!首先,我建议您使用破折号和大写字母命名存储库,例如:My-Awesome-Plugin。其中的主文件夹应命名为“ my-awesome-plugin”。我建议在整个插件中使用此约定.

在OSX中,重命名文件很容易。打开所有文件夹,然后选择其中包含字符串plugin-name的所有文件。右键单击以重命名所有14个文件并批量重命名批次.

改名

在Windows中会有点困难,请看一下 HowToGeek 文章以获取更多信息,或者只是一个一个地走.

像这样的字词 "插件名称" 其他变体也会散布在整个文件内容中。您可以使用 升华, 原子 或其他功能强大的文本编辑器,以在多个文件中批量替换。这是您应该替换的列表(请确保区分大小写的搜索替换).

  • plugin_name 应该成为my_awesome_plugin
  • 插件名称 应该成为My_Awesome_Plugin
  • 插件名称 应该成为我的超赞插件

完成后,请务必填写主文件的标题注释(my-awesome-plugin.php),以根据需要对其进行自定义.

目录

WordPress插件模板中包含很多内容。这个想法是为放置物品的地方设置严格的准则。例如,在一个特定的位置添加了钩子,在标准的位置添加了前端功能,依此类推。让我们看一下框架的主要部分.

请注意,我将参考已重命名的文件,例如:includes / class-my-awesome-plugin.php。如果您将插件重命名为其他名称,则需要记住,文件名中的my-awesome-plugin部分对您而言将有所不同.

激活,停用和卸载

激活插件后要运行的任何代码都应包含在“ /my-awesome-plugin-name-activator.php”中。在此文件中,有一个名为My_Awesome_Plugin_Activator的类,在其中应使用一个activate()方法.

如果您还不熟悉对象,请不要担心,只要知道放置在哪里就可以开始.

停用时需要运行的代码应放在include / my-awesome-plugin-name-deactivator.php中。您需要使用My_Awesome_Plugin_Deactivator中的activate()方法.

您认为这有点太复杂了吗?我不怪你!当您开始使用面向对象的概念时,您会发现它比程序代码的好处。如果没有别的,它为放置您的代码提供了一个非常明显的地方,这本身就是一个巨大的帮助.

对于卸载,推荐的方法是使用WordPress插件样板所做的uninstall.php。您的代码应放在该文件的最底部.

添加挂钩

钩子由WordPress Plugin Boilerplate惊人地处理,但是起初似乎有点笨拙。您所有的钩子都应放在include / class-my-awesome-plugin.php中。更具体地说,在My_Awesome_Plugin类中,有两个方法:

  • 添加前端使用的挂钩时的define_public_hooks()
  • 添加后端使用的挂钩时的define_admin_hooks()

您无需像往常一样使用add_action()或add_filter()来做其他事情。例如,这是您修改帖子内容的方式.

$ this->装载机->add_action(’the_content’,$ plugin_public,’modify_post_content’);

第一个参数是挂钩的名称,第二个参数是对public或admin对象的引用。对于公共挂钩,应为$ plugin_public,对于管理挂钩,应为$ plugin_admin。第三个参数是钩子函数.

尽管看起来比较复杂,但它完全标准化了添加钩子的过程,在此过程中将钩子分为两个不同的组.

公共和管理内容

WordPress Plugin Boilerplate将钩子分为管理员/公共组,但这还不是全部。通过要求您在公用文件夹中编写面向公众的代码并在admin文件夹中编写面向管理员的代码,它以相同的方式拆分所有代码.

这两个文件夹都包含css,js和partials文件夹。您应该将使用过的CSS / JS资产放入这些文件夹中,并将HTML模板和其他可重用位写入partials文件夹。可以在partials文件夹中创建新文件,实际上就是这样!

您也应该在这些文件夹中的相应目录的类中编写钩子函数。当我们将Modify_post_content函数挂接到上面的the_content时,我们告诉WordPress插件样板在哪里也可以找到它。由于我们将其添加到了面向公众的一面,因此WordPress插件样板希望在公共文件夹中的My_Awesome_Plugin_Public类中定义它。只需在类中创建此函数,然后照常编写其他所有内容.

资源和依赖性

如果要使用外部资源,例如 TGM插件激活, 您应该将其添加到include文件夹。 TGM是一个名为class-tgm-plugin-activation.php的文件,应包含在class-my-awesome-plugin.php文件的load_dependencies()方法中:

require_once plugin_dir_path(dirname(__FILE__))。 ‘includes / class-tgm-plugin-activation.php’;

总览

您是否对所有文件名和功能感到困惑?不用担心,您很快就会掌握它。实际上,您通常只修改三个文件:

  • include / class-my-awesome-plugin.php是您添加所有挂钩和依赖项的地方.
  • public / class-my-awesome-plugin-public.php是您添加所有面向公众功能的地方.
  • admin / class-my-awesome-plugin-admin.php是所有面向管理员的功能所在.

最初,使用WordPress插件样板可能看起来很麻烦,但最终会有所回报。一年后,您会回来,知道一切都在哪里,您的插件开发将在各个产品之间进行标准化,其他开发人员也将能够了解发生了什么情况.

最后,不要忘记提供简单窗口小部件的插件可能不需要这样的框架。尽管使用WordPress插件模板不会降低您的插件的速度,但如果您只需要几行简单的代码,它就会阻塞视图!

Jeffrey Wilson Administrator
Sorry! The Author has not filled his profile.
follow me
    Like this post? Please share to your friends:
    Adblock
    detector
    map