WordPress CMS 改变了我们互联网的面貌,让新想法得以蓬勃发展,其开源运动在软件和 Web 开发领域有着强大的影响力。
WordPress 是一个博客平台,能够启动许多其他脚本,例如网络论坛、工作板,甚至是经典的网页内容管理系统。
我们将介绍几种开始 WordPress 插件开发的方法。这些步骤相对简单,不需要付出巨大的努力来学习。即使对WordPress 文件结构和管理面板有基本的了解,PHP 的基本知识也会很有用。
在本简短教程中,我们将介绍创建简单 WordPress 插件所需的必要步骤。该功能将用于根据传递给我们的函数调用的数字来开发动态摘录。
您需要上传插件文件并从管理面板激活它,然后通过从我们希望摘录出现的任何页面调用我们的函数来跟进。本文后面已添加完整插件源代码的链接 🙂
60 多个最受欢迎的 WordPress 技巧和技巧(更新)
WordPress CMS 改变了我们互联网的面貌,让新思想蓬勃发展,其开源运动占据了强大的影响力 阅读更多
为什么要为 WordPress 开发?
插件是通过添加额外功能来增强博客功能的好方法。这些可以通过函数挂钩放置在模板内的任何位置。
随着时间的推移,WordPress 插件系统的可扩展性带来了巨大的增长和数百个开发人员提交的软件。WordPress 在其 CMS 中明确提供了如此高级的功能,以至于独特的插件很少见。
作为开发人员,您可以完全控制博客的后端细节。聘请 PHP 开发人员来创建系统插件的成本可能比您想象的要高得多,而且 API 相对容易使用和学习。
作为次要论点,通过 WordPress 进行开发是将自己调整到其他领域的绝佳实践。在 WordPress 中构建较小的插件和侧边栏小部件将帮助您了解后端系统的工作原理。
这不仅限于 WordPress,因为您将对绝大多数内容系统有更深入的了解。
一、WP文件夹结构
对 WordPress 文件夹结构的介绍将显示主要的应用程序目录。在 wp-content 中,您会找到一个插件目录。这里是您所有个人插件的存放位置,可以是单个文件,也可以是正确命名的子目录。
对于只需要一个 .php 文件的较小插件,您可以选择将其直接放入 plug-ins/ 目录中。但是,当您开始开发更复杂的应用程序时,创建一个以您的插件命名的子目录会更有用。
在内部,您可以包含 JavaScript、CSS 和 HTML 以及您的 PHP 函数。
readme.txt
如果您计划提供您的插件供下载,文件也很有用。该文件应包括您的姓名和插件的功能。作为作者,您还可以考虑包括有关每个修订版的详细信息以及已发布的更新。
2. 启动你的 PHP 文件
创建新插件时,您需要从一个简单的 PHP 文件开始。这可以命名为任何名称,但通常应反映您的插件的正式名称。
因此,例如,我已经创建了我们的基本代码并将我的文件命名为hongkiat-excerpt.phps(保存并将文件重命名为 .php)。
您的插件的第一行必须是解析引擎的注释信息。
这非常重要,因为如果没有,WordPress 将无法处理您的文件。下面是一个示例代码片段,您可以复制和塑造自己的代码片段。
1个
2个
3个
4个
5个
6个
7
8个
|
<?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 相同,它将放置在插件面板内的详细信息窗格中。
虽然不需要包含版本或描述,但它确实使您的插件看起来更专业。
3. WordPress 命名约定和最佳实践
有几种方法可以实际构建您的插件。
很多时候 PHP 开发人员会创建一个完整的类系统,以避免与函数和变量名发生冲突。如果您不熟悉 PHP 的高级 OOP 功能,那么最好只在示例函数中编写代码。
因此,对于我们的示例代码,我们将编写一个函数来存放我们的数据。我们还需要定义一些变量,这些变量对于在我们的模板文件中实现至关重要。
下面是从我们的插件文件中删除了核心逻辑的代码示例。
编写示例代码时,最好遵循 WordPress 制定的法规和指南。由于已经定义了如此多的内部函数,您可以通过在所有变量和函数名称前加上标签来避免重复。
1个
2个
3个
4个
5个
6个
7
|
<?php define( "HK_EXAMPLE_CONSTANT" , "this is a value" ); function hk_example_function( $limit ) { // Some code goes here. } ?> |
在上面的示例中,我们在所有设置名称前加上hongkiat前缀。
这可以替换为您选择的通常与您的插件名称相关的任何关键字。上面的代码只是示例设置,不应该属于我们的最终插件。
这只是为了让您深入了解应该如何编写变量名和函数调用。
4. 深入了解过滤器和操作
在我们进入原始代码之前,还有另一个值得注意的概念。
操作和过滤器是两个完全不同的概念,它们与它们处理插件数据的方式真正相关。
这两段代码是 WordPress API 中的标准代码。过滤器和操作允许插件开发人员更新整个 WordPress 管理面板中与您的新插件相关的代码位。
这意味着您可以在侧边栏中添加一个新选项卡或为您的插件选项添加其他设置链接。
了解 add_filter()
过滤器用于传递到 WordPress 的一些文本或数据。使用过滤器,您实际上可以通过自己编写的自定义函数来过滤内容,从而以任何方式更改数据。
例如,您可以创建一个过滤器来更改$the_content
它是由 WordPress 设置的变量,其中包含 WordPress 文章的整个帖子内容。
对于我们的插件,我们将把$the_content
字符的长度缩短为摘录。
当您编写插件来自定义博客的外观和感觉时,过滤器会派上用场。在编写侧边栏小部件或更小的函数来更改帖子的显示方式时,这些特别受欢迎。
下面是显示如何应用过滤器的示例代码行。
1个
|
add_filter( 'wp_title' , 'hongkiat_func' ); |
在这里,我们在 WordPress 页面标题中添加了一个过滤器。请注意,此代码与我们的官方插件无关,此处仅用作示例。
该add_filter
函数是 WordPress 原生的,用于将新过滤器添加到页面内容中的变量。
在上面的行中,我们定位$wp_title
其中包含我们当前页面的标题。
然后我们将这个变量传递给一个名为 titled 的假函数,hongkiat_func()
然后它可以出于任何目的操纵和返回一个新的标题标签。
理解 add_action()
操作类似于过滤器,因为它们不适用于数据位,而是针对模板和管理面板中的预定义区域。例如,您可以在更新或编辑页面内容时应用操作。
WordPress 在其 API 文档中提供了一个全面的操作列表。下面是一小部分示例操作,供您熟悉一些预定义的目标区域。
- publish_post——在发布帖子或状态更改为“已发布”时调用
- save_post – 在从开始创建或更新帖子/页面时调用
- wp_head – 在加载模板并运行
wp_head()
函数时调用 - loop_end——在通过 WordPress 循环处理完最后一篇文章后立即调用
- trackback_post – 每当将新的引用添加到帖子中时调用
我们可以再次看到这段代码归结为多么简单。如果您能理解操作和过滤器之间的区别,您将更接近于构建全面、有效的 WordPress 插件。
下面是另一行代码,用于初始化save_post
挂钩上的动作函数。再次澄清一下,这与我们当前正在开发的插件无关,仅用作一段示例代码以了解该add_action()
功能。
1个
|
add_action( 'save_post' , 'notify' ); |
所以在这里我们看到了与之前类似的设置add_filter()
。我们需要 2 个变量,第一个包含我们要定位的钩子的名称。
在这种情况下save_post
,这意味着无论何时保存新帖子,我们都将调用在第二个位置 ( notify()
) 中定义的函数。您显然可以将 notify 更新为您想要运行的任何函数名称,但是我们当前的示例插件不需要这样做。
完成我们的插件逻辑
完成我们的路径后,我们将把我们的最终功能直接添加到我们的插件文件中。API 文档非常具体,为可能持有高级问题的开发人员提供了极好的资源。
如果您不熟悉 PHP,这些材料可能看起来很难,但是花点时间了解这些概念,一切都会自然而然地开始!
下面的函数应该直接添加在你的插件的标题注释之后。或者,这也可以放在您的主题functions.php
文件中。
该代码用于基于有限范围的字符创建动态帖子内容。
因此,对于我们的示例,我们可以使用该函数将故事摘录的长度限制为 55 个字符hk_trim_content()
。您可以轻松地从侧边栏小部件或您的主题文件之一调用这段代码来替换$the_content
.
1个
2个
3个
4个
5个
6个
7
8个
9
10
11
12
13
14
15
16
17
|
<?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
which 是另一个特定于 WordPress 的函数。
这是您不需要完全掌握的另一个方面,但它确实有助于将来通过 WP 进行编程。查看apply_filters 参考页面以获取有关该主题的更多详细信息和常见问题解答。
上面的核心函数名为hk_trim_content()
. 这只需要 1 个名为 的参数$limit
。
这也可以缩短为$lim
which should store an integer 指定要限制摘录的字符数。内容用于完整的帖子页面和静态页面(关于我们,联系方式)。
因此,为了调用这个函数,我们需要将参数添加到我们的模板文件中。这可能会放置在您的index.php
或loop.php
文件中的某个位置,并且需要您先安装插件。示例如下:
1个
|
<?php echo hk_trim_content(55); // display page content limited at 55 chars ?> |
安装和运行插件
如果你想跳过硬编码,我已经为插件创建了一个示例文件来演示。
只需下载此文件(保存并将文件重命名为.php
)或将代码复制/粘贴到新的 PHP 文档中并将其上传到您的/wp-content/plugins
目录。
完成后,您将需要访问 WordPress 管理面板并浏览您当前的插件集以获取刚刚安装的演示。一旦你激活,就不会发生任何新的事情,直到我们手动添加我们的函数调用。
为此,只需导航Appearance -> Editor
并查找single.php
.
此文件包含基本文章发布页面的所有模板 HTML/CSS。向下滚动直到找到the_content()
并替换为上面的示例代码。这会将您的所有文章页面限制为 55 个字符,无论使用何种视图。
您还可以将此功能添加到模板目录中的类似页面,例如search.php
或archive.php
。
结论
这些是让您开始从事 WordPress 开发工作的一些基础知识。插件系统非常庞大,包含大量内部功能。
如果您已经有了插件的想法,请在本地安装的 WordPress 上尝试一下,以练习这些主题。
如果您仍然对大部分信息感到困惑,可以查看WordPress 文档并在那里搜索您的答案。
开发社区充满了乐于助人的用户,论坛保存着多年前的问题档案。