WordPress插件开发:一个入门Demo

操作环境

服务器操作系统:Ubuntu 16.04
Web 服务器:Apache2
WordPress 版本:5.3.2
WordPress 主题:Twenty Sixteen(版本:2.0)

项目说明

WordPress 支持以插件的方式扩展其功能。本文就编写一个 WordPress 插件的样例程序,介绍 WordPress 插件的头部格式并实现一个修改“继续阅读”标签显示的提示文字的功能。

项目实现

WordPress 插件位于 wp-content/plugins/ 目录下,在正式开始之前,我们需要在该目录下创建一个文件夹,用于放置插件文件,例如:

sudo mkdir demo

修改其权限和所属用户与组:

sudo chown www-data.www-data demo
sudo chmod 755 demo

进入 demo 文件夹,创建一个 PHP 文件,文件名称不限,例如:

sudo touch demo.php

之后,修改该文件的所属组和所属用户为当前 Web 服务器所属的组和所属的用户并赋予适当的权限,为了防止产生权限过低或者过高的情况,接下来创建的所有插件文件也都要进行类似的修改,本文将不再赘述。

编辑 demo.php 文件,写入如下内容作为头部信息,以便 WordPress 可以正确识别并运行该插件:

<?php
/**
 * Plugin Name:       Demo
 * Plugin URI:        https://zhaokaifeng.com/
 * Description:       A WordPress plugin demo.
 * Version:           0.0.1
 * Requires at least: 5.2
 * Requires PHP:      7.4
 * Author:            ZhaoKaifeng
 * Author URI:        https://zhaokaifeng.com/
 * License:           GPL v2 or later
 * License URI:       https://www.gnu.org/licenses/gpl-2.0.html
 * Text Domain:       Demo
 * Domain Path:       /languages
 */
?>

WordPress 插件头部信息中各个字段的含义如下:

  • Plugin Name: 插件的名称,该名称将显示在 WordPress 的管理后台中。
  • Plugin URI: 插件的项目主页,一般是一个 URL. 需要注意的是这个 URL 不能是 WordPress.org 的 URL.
  • Description: 对插件的一个简短描述,描述内容应少于 140 个字。
  • Version: 当前插件的版本号
  • Requires at least: 插件正常工作所需的最低 WordPress 版本。
  • Requires PHP: 插件正常工作所需的最低 PHP 版本。
  • Author: 插件作者的名字。
  • Author URI: 插件作者的主页。
  • License: 插件代码使用的许可证。
  • License URI: 许可证全文的文本地址。
  • Text Domain: 插件的 gettext 文本域。
  • Domain Path: 告诉 WordPress 在哪里获取该插件的翻译。
  • Network: 插件是否只能在联网时激活,该字段只能设置为 true. 若不需要的话,请省略该字段。

以上设置完成之后,进入 WordPress 的管理后台,我们就可以在“插件 / 已安装的插件”中看到该插件,如图 1:

图 1

由于这个插件中此时并没有任何功能性代码,因此即便我们点击了“启动”,也不会看到实质性的变化。接下来我们就给该插件加入一些具体的功能。

在写文章时,我们可以使用编辑器中的“继续阅读”标签实现隐藏一部分文章内容的目的,用户只有点击了该标签才能看到全文。例如图 2:

图 2

从图 2 中可以看到,加入“继续阅读”标签后显示了一个名称为“继续阅读”的超链接,点击“继续阅读”之后才会显示全文。

接下来我们就在 demo.php 文件中加入一段代码,使得启用该插件后可以将超链接原来的名字“继续阅读”修改为 “Click Me”.

注意:某些 WordPress 主题可能会强制使用自己对页面内容的定义,从而使得如下代码失效。我在 WordPress 官方团队开发的 “Twenty Sixteen” 主题中测试发现如下代码能够正常工作。

demo.php 文件中写入如下代码:

function click_me_zkf(){
  return '<a class="more-link" href="' . get_permalink() . '">Click Me</a>';
}
add_filter( 'the_content_more_link', 'click_me_zkf' );

在上面的代码中,我们首先创建了一个 click_me_zkf() 函数,为了避免和 WordPress 站点程序中已有的函数产生冲突,我在函数中加入了 zkf 三个字母,尽可能保证我们创建的这个函数的唯一性。

click_me_zkf() 函数中包含如下代码:

return '<a class="more-link" href="' . get_permalink() . '">Click Me</a>';

其中,get_permalink() 函数能够取出当前文章的永久链接或者文章 ID, 该函数是 WordPress 主程序提供的一个函数。

WordPress 提供一种叫做执行挂勾的机制,该机制允许插件把一些功能挂载到 WordPress 主程序中。完成挂载之后,当系统运行至特定环节时,就会去调用插件内的一些函数,执行插件定义的操作。执行挂勾分为两种,一种叫“动作”,另一种叫“过滤器”。简单地说,“动作”是额外加进 WordPress 运行环节中的,而“过滤器”则是修改 WordPress 的某些运行环节,例如,过滤器可以修改即将要保存或者发送出去的数据。

WordPress 为我们提供了多个过滤器函数,这里我们要使用 add_filter() 这个过滤器函数,该函数的作用是:

“Hook a function or method to a specific filter action.”

具体代码如下:

add_filter( 'the_content_more_link', 'click_me_zkf' );

上述代码的作用是,使用 click_me_zkf() 函数代替 the_content_more_link() 函数执行操作。

以上工作完成后,启动 Demo 插件,刷新站点首页,如图 3:

图 3

此时可以看到,之前的“继续阅读”已经变成了 “Click Me”, 插件的预期功能已实现。

References:
[1]. get_permalink() | Function | WordPress Developer Resources
https://developer.wordpress.org/reference/functions/get_permalink/
[2]. zh-cn:插件 API « WordPress Codex
https://codex.wordpress.org/zh-cn:Plugin_API#Filters
[3]. add_filter() | Function | WordPress Developer Resources
https://developer.wordpress.org/reference/functions/add_filter/

EOF


荒原之梦网全部内容均为原创,提供了涵盖考研数学基础知识、考研数学真题、考研数学练习题和计算机科学等方面,大量精心研发的学习资源。

意见反馈 | 内容纠错 | 微信 | QQ | 公众号 | 知乎 | 微博 | 博客园 |CSDN | B 站 | 电子邮件
豫 ICP 备 17023611 号-1 | 公网安备 - 荒原之梦 豫公网安备 41142502000132 号 | SiteMap
Copyright © 2017-2024 ZhaoKaifeng.com 版权所有 All Rights Reserved.

Copyright © 2024   zhaokaifeng.com   All Rights Reserved.
豫ICP备17023611号-1
 豫公网安备41142502000132号

荒原之梦 自豪地采用WordPress