WordPress插件开发新手指南

WordPress CMS改变了我们互联网的面貌,并催生了许多新想法,其开源运动在软件和Web开发中扎根。 WordPress是一个博客平台,能够启动许多其他脚本,例如网络论坛,工作委员会,甚至是经典的网页内容管理系统。

我们将介绍几种方法来开始WordPress的插件开发。 这些步骤非常简单,不需要花很大的精力去研究。 即使对WordPress文件结构和“ 管理”面板有基本了解,PHP的基本知识也将很有用。

在这个简短的教程中,我们将介绍创建一个简单的WordPress插件所需的基本步骤。 该功能将用于根据传递给函数调用的数字创建动态摘录。 您需要上传插件文件并从“管理”面板**,然后在希望显示摘录的任何页面上调用我们的函数进行后续操作。 本文稍后将添加指向完整插件源代码的链接:)

为什么要为WordPress开发?

插件是通过添加其他功能来增强博客功能的好方法。 这些可以通过功能挂钩放置在模板内的任何位置。 随着时间的推移,WordPress插件系统的可扩展性实现了巨大的增长,并允许开发人员提交数百种软件。

WordPress专门在CMS中提供了如此高级的功能,以至于很少有独特的插件。 作为开发人员,您可以完全控制Weblog的后端细节。 聘用PHP开发人员来创建系统插件的费用比您想象的要高得多,并且该API非常容易使用和学习。

WordPress插件开发新手指南

作为第二个论点,在WordPress上进行开发是使自己适应其他领域的好习惯。 在WordPress中构建较小的插件和侧边栏小部件将有助于您了解后端系统的实际工作原理。 这不仅限于WordPress,因为您将对绝大多数内容系统有更深入的了解。

1. WP文件夹结构

WordPress文件夹结构的简介将显示基本的应用程序目录。 在wp-content内,您将找到一个plugins目录。 单个文件或正确命名的子目录都将存放在此处。

对于仅需要单个.php文件的小型插件,您可以选择将其直接放置在plugins /目录中。 但是,当您开始开发更复杂的应用程序时,创建以插件命名的子目录会更加有用。 在其中可以容纳JavaScript,CSS和HTML以及PHP函数。

WordPress插件开发新手指南

如果您打算提供插件供下载,则readme.txt文件也可能很有用。 该文件应包括您的姓名和插件的功能。 作为作者,您还可以考虑包括有关每个修订以及已发布哪些更新的详细信息。

2.启动您的PHP文件

创建新插件时,您需要从一个简单的PHP文件开始。 可以命名为任何名称,但通常应反映您插件的正式名称。 因此,例如,我创建了基本代码,并将文件命名为hongkiat-excerpt.phps

插件的第一行必须是解析引擎的注释信息。 这非常重要,因为WordPress将无法处理您的文件。 下面是一个示例代码片段,您可以复制自己的代码并对其进行塑造。

<?php
/*
Plugin Name: Plugin Name here
Plugin URI: http://www.yourpluginurlhere.com/
Version: Current Version
Author: Name please
Description: What does your plugin do and what features does it offer...
*/
?>

**时,插件名称将显示在管理后端面板中。 与URI相同,该URI将放置在插件面板内的详细信息窗格中。 尽管不需要包含版本或说明,但这确实使您的插件看起来更加专业。

3. WordPress命名约定和最佳实践

有几种实际构造插件的方法。 很多时候,PHP开发人员会创建一个完整的类系统,以避免与函数和变量名发生冲突。 如果您不熟悉PHP的高级OOP功能,那么最好只在示例函数中编写代码。

因此,对于我们的示例代码,我们将编写一个用于存储数据的函数。 我们还需要定义一些变量,这些变量是在模板文件中实现的关键。 以下是从我们的插件文件中删除了核心逻辑的示例代码。

WordPress插件开发新手指南

在编写示例代码时,最好遵循WordPress设置的法规和指南。 由于已经定义了太多内部函数,因此可以通过在所有变量和函数名称前加上标签前缀来避免重复。

<?php
define("exampleVariable", "this is a value");

function hk_content_example_function( $limit ) {
  // some code goes here
}

?>

在上述示例中,我们为所有设置名称添加hongkiat前缀。 可以用您选择的通常与您的插件名称相关的任何关键字替换它。 上面的代码只是示例设置 ,不应该与我们最终的插件有关。 这只是为了让您了解如何编写变量名和函数调用。

4.分为过滤器和动作

在跳入原始代码之前,还有一个值得一提的概念。 操作过滤器是两个完全不同的概念,它们在处理插件数据的方式上有很深的联系。

这两段代码是WordPress API中的标准配置。 过滤器和操作允许插件开发人员在整个WordPress管理面板中更新与您的新插件有关的代码。 这意味着您可以在边栏中添加新标签,也可以为插件选项添加其他设置链接。

WordPress插件开发新手指南

了解add_filter()

过滤器用于传递到WordPress的少量文本或数据。 使用过滤器,您实际上可以通过自己的自定义编写函数过滤内容 ,从而以任何方式更改数据。

例如,您可以创建一个过滤器来更改$the_content ,这是WordPress设置的变量,其中包含WordPress文章的整个帖子内容。 对于我们的插件,我们将采用$the_content并将字符长度缩短为摘录。

在编写插件以自定义博客的外观时,过滤器会派上用场。 当编写侧边栏小部件或较小的功能以更改帖子的显示方式时,这些功能尤其流行。 下面是示例代码行,显示了如何应用过滤器。

add_filter('wp_title', 'hongkiat_func');

在这里,我们将过滤器添加到WordPress页面标题中。 请注意,此代码与我们的官方插件无关,此处仅用作示例。

add_filter函数是WordPress的本机,用于向页面内容中的变量添加新的过滤器。 在上面的行中,我们定位到$wp_title ,其中包含当前页面的标题。 然后,我们将此变量传递到名为hongkiat_func()的伪函数中,该伪函数随后可出于任何目的操纵并返回新的title标签。

WordPress插件开发新手指南

了解add_action()

操作与过滤器相似,因为它们不适用于数据的某些位,而是针对模板和管理面板中的预定义区域。 例如,您可以在更新或编辑页面内容时应用操作。 WordPress在其API文档中提供了完整的操作列表 以下是一些示例操作的清单,可让您熟悉一些预定义的目标区域。

  • publish_post –在发布帖子或状态更改为“已发布”时调用
  • save_post –从开始创建或更新帖子/页面时调用
  • wp_head –加载模板并运行wp_head()函数时调用
  • loop_end –通过WordPress循环处理最终帖子后立即调用
  • trackback_post –每当新的引用添加到帖子中时调用

再次,我们可以看到这段代码简化为多么简单。 如果您能够了解操作和过滤器之间的区别,那么您将更接近于构建全面,有效的WordPress插件。 下面是另一行代码,用于在save_post钩子上初始化动作函数。 再次澄清一下,这与我们当前正在开发的插件无关,仅用作理解add_action()函数的一部分示例代码。

add_action('save_post', 'notify');

因此,在这里我们看到与add_filter()类似的设置。 我们需要2个变量,第一个变量包含我们要定位的钩子的名称。 在这种情况下, save_post意味着每当保存一个新帖子时,我们都将调用第二个位置中定义的函数( notify() )。 您显然可以将notify更新为您想要运行的任何函数名称,但是我们当前的示例插件不需要这样做。

完成我们的插件逻辑

最后,我们将最终功能直接添加到插件文件中。 API文档非常具体,为可能遇到高级问题的开发人员提供了极好的资源。 如果您不熟悉PHP,但是花一些时间了解概念,事情可能会很自然地开始!

以下功能应直接在插件的标题注释之后添加。 或者,也可以将其放置在主题的functions.php文件中。 该代码用于基于有限的字符范围创建动态的帖子内容。

因此,对于我们的示例,我们可以使用hk_trim_content()函数将故事摘录限制为最多55个字符。 您可以从侧边栏小部件或您的主题文件之一$the_content调用此代码,以替换$the_content

<?php 
function hk_trim_content( $limit ) {
  $content = explode( ' ', get_the_content(), $limit );
  
  if ( count( $content ) >= $limit ) {
    array_pop( $content );
    $content = implode(" ",$content).'...';
  } else {
    $content = implode(" ",$content);
  }	
  
  $content = preg_replace('/\[.+\]/','', $content);
  $content = apply_filters('the_content', $content); 

  return $content;
}
?>

不应期望您完全了解此处使用的所有内部变量或函数。 大致了解应该如何编写函数以及示例集将是一个很好的开始。

您可能还注意到我们正在使用对apply_filters的调用,这是另一个特定于WordPress的函数。 这是您不需要完全掌握的另一个方面,但是对于将来通过WP进行编程确实有帮助。 请查看apply_filters参考页面,以获取有关该主题的更多详细信息和常见问题解答。

上面的核心函数名为hk_trim_content() 这仅需要1个名为$limit参数。 也可以将其缩短为$lim ,该值应存储一个整数,该整数指定要限制摘录的字符数。 内容用于完整的帖子页面和静态页面(关于我们,联系人)。

因此,为了调用此函数,我们需要将参数添加到模板文件中。 它将放置在index.phploop.php文件中的某个位置,并且需要您首先安装插件。 下面的例子:

<?php echo hk_trim_content(55); // display page content limited at 55 chars ?>

安装和运行插件

如果您想跳过硬编码,我已经为插件创建了一个示例文件进行演示。 只需下载此文件 (将其重命名为.php)或将代码复制/粘贴到新的PHP文档中,然后将其上传到您的/wp-content/plugins目录即可。

WordPress插件开发新手指南

完成后,您将要访问WordPress管理面板并浏览您当前的插件集,以获取刚刚安装的演示。 一旦**,将不会发生新的事情,除非我们手动添加函数调用。 为此,只需浏览Appearance -> Editor并查找single.php

该文件包含基本文章发布页面的所有模板HTML / CSS。 向下滚动,直到找到the_content()并替换为上面的示例代码。 无论使用哪种视图,这都会将您的所有文章页面限制为55个字符。 您还可以将此功能添加到模板目录中的相似页面,例如search.phparchive.php

结论

这些是使您开始从事WordPress开发工作的一些基础知识。 插件系统非常庞大,并包含大量内部功能。 如果您已经有了插件的想法,请在WordPress的本地安装上尝试一下以实践这些主题。

如果您仍然对很多信息感到困惑,可以查看WordPress文档并在此处搜索答案。 开发社区中充斥着乐于助人的用户,并且论坛中保存了许多年前的问题档案。

翻译自: https://www.hongkiat.com/blog/beginners-guide-to-wordpress-plugin-development/