如何编写基本的WordPress插件
功能描述:该插件将在页面,文章或小部件中使用短代码显示一段文本
在编写插件之前
- 您应该对Web开发有基本的了解。HTML,JS和CSS等
- 您应该已在本地服务器上安装了最新的WordPress。
- PHP编程语言的基础知识。
- WordPress插件的基础知识。
WordPress插件的基本设置
WordPress所有插件存储于wp-content / plugins的名为plugins的目录中 。此目录中可用的所有插件都将在插件安装菜单中列出。开始创建插件。
创建一个新目录, wp-content/plugins/ 为其命名 simple-test
在新创建的目录中创建一个新文件,将其命名为 simple-test.php
插件的主文件应该与插件的名称完全相同。如果插件名称包含多个单词,这些单词之间有空格,则必须使用短划线/连字符分隔单词而不是空格。如我们创建的插件名称。它的名字是simple test,它的相应主文件名是simple-test.php。
第一步:
创建simple-test的目录和主文件之后。在WordPress管理面板插件管理菜单,不会显示我们刚刚创建的插件。如下图所示。
这是因为WordPress使用插件信息,即插件名称,作者和描述等,来自插件主文件中的PHP注释。在我们的项目中,它的主文件是simple-test.php。让我们为其添加一些信息
/**
* Plugin Name: Simple test Plugin
* Description: 一个短代码演示插件
* Version: 1.0
* Author: 主题笔记
* Author URI: https://topicnote.com
* Text Domain: simple-test
*/
在添加相关注释之后,在WordPress管理面板插件就会看见我们已经创建的插件。
第二步:
让我们在simple-test.php文件中添加更多代码。
首先,我们必须保护此文件不被直接访问,以防止出现任何错误。例如:阻止用户访问 example.com/wp-content/plugins/simple-test/simple-test.php。因此,我们必须检查是否 定义了WordPress ABSPATH常量? 当WordPress从index.php或从起点执行时,ABSPATH是一个常量。在simple-test.php文件中PHP标记之后添加。
defined('ABSPATH') or die('No script kiddies please!');
第三步:
当执行某些操作时,WordPress使用钩子来集成额外的功能。例如,当激活或停用插件时,将调用一个动作。动作是一种自定义函数,它将自定义功能移植到WordPress的核心。
插件激活钩子
激活插件时 ,默认情况下会调用register_activation_hook函数。它将文件名作为第一个参数,它应该是插件的主文件,而函数名作为第二个参数,在同一个文件中定义。它的语法是:
register_activation_hook( $file, $function )
此挂钩用于安装期间插件的必要配置设置。例如,如果插件需要创建一些数据库表,那么该逻辑代码将插入此挂钩中。当激活插件时,将激活所有数据库表和配置。
我们现在练手的插件非常简单,因此我们暂时不需要任何配置。我们将添加一个空函数。继续编写simple-test.php,在上述文件中添加以下函数。
function zb_activation_hook(){
// Activation code here
// 自定义配置
}
//Register activation hook
register_activation_hook(__FILE__, 'zb_activation_hook');
WordPress有成千上万的插件和主题,由不同的开发人员开发。因此,我们正在使用的任何函数或类名可能已经在另一个插件或主题中使用相同的名称定义。当之前创建具有相同名称的函数或类时,PHP将在执行期间引发有关重新定义具有相同名称的函数的致命错误。为防止在已安装的任何其他插件或将来安装的某个地方已定义相同的功能名称。WordPress建议在所有函数或类名中附加一些前缀。
插件停用钩子
停用挂钩与激活挂钩相反,只要插件被停用,它就会由WordPress执行。语法与激活挂钩相同,只是名称不同。
function zb_deactivation_hook(){
// Deactivation code here
// 自定义配置
}
//Register activation hook
register_deactivation_hook(__FILE__, 'zb_deactivation_hook');
第四步:
现在我们将在管理面板中添加一个菜单,以便管理员可以更新显示内容。
首先,我们必须创建一个的函数,我们将添加一个HTML表单以从admin获取文本。在simple-test.php中添加以下代码
function zb_create_content_page(){
echo "<h1>你可以在此处设置插件内容</h1>"
}
之后我们在管理面板边栏中创建一个菜单,当点击该菜单时显示插件设置页面。这里我们将使用 add_menu_page 函数,它将在侧边栏中添加顶级菜单,继续在simple-test.php文件中添加代码。
// 注册菜单
function zb_register_menu(){
add_menu_page( 'Simple Test', 'Simple Test', 'manage_options', 'simple-test', 'zb_create_content_page');
}
add_menu_page 方法以及各种参数,可以在WordPress Codex中心找到完整的参数列表 。在 add_menu_page 函数中,我们传递菜单名称,页面标题,功能,页面slug以及在此钩子运行时要调用的函数。继续添加
add_action('admin_menu', 'zb_register_menu');
这是重新启用我们刚刚编写的插件。您将看到菜单栏底部出现一个新菜单。
接下来我们更新zb_create_content_page
// Admin page
function zb_create_content_page(){
if(isset($_POST['submit'])){
update_option( 'zb_test_content', $_POST['content'] );
}?>
<h1>你可以在此处设置插件内容</h1>
<div class="wrap">
<h2>Simple Test Page</h2>
<form method="post" id="simple-test-form">
<label><strong>内容</strong></label>
<div>
<textarea rows="10" cols="80" name="content" id="content"><?php echo get_option('zb_test_content') ;?></textarea>
</div>
<div>
<input type="submit" class="button button-primary button-large" name="submit" value="保存">
</div>
</form>
</div>
<?php
}
我们使用WordPress设置API将我们的内容存储在数据库中。在我们更新的函数中,我们添加了一个表单,其中添加了一个textarea,默认情况下将使用选项API函数get_option显示之前添加的文本。表单提交逻辑也在相同的功能中实现。
更新功能后,刷新页面时,您将看到带有保存按钮的文本框以默认文本。
输入一些内容,然后点击保存
在第4步中我们应该了解到了:
- 如何在WordPress管理仪表板中创建菜单。
- 如何创建页面并添加HTML表单。
- 使用WordPress选项API来获取设置选项。
第五步:
创建一个短代码,以便我们显示设置内容。继续在simple-test.php中添加以下代码代码:
//Shortcode function
function zb_get_content(){
return get_option('zb_content');
}
// Register shorcode
add_shortcode('zb_show_content', 'zb_get_content');
首先,我们创建了一个函数,它将使用get_option函数从数据库获取内容,然后我们使用add_shortcode钩子在WordPress上注册了一个短代码,它带有两个参数,一个是短代码的名称,另一个是函数名称。在我们的例子中,我们添加了“zb_show_content”代码。当使用短代码时将调用它们
使用括号[]周围的短代码名称调用WordPress短代码。如下:
[zb_show_content]
让我们调用此短代码来查看文章中文本框的内容。创建一个新文章并将[zb_show_content] shrotcode添加到其中。
点击发布按钮,您将在文章中看到我们在插件中设置的文本,如下图所示:
恭喜!您已经创建了一个非常基本的WordPress插件。
这是主题笔记编写的完整源代码,您可以直接下载它。
[buttons text=”下载” url=”https://www.topicnote.com/download/?file=5b76d1210beb173af088a3b17efde7af” icons=”icon-lianjie” color=”primary” border=”no” target=”yes” ]