如何构建您自己的 WordPress 插件
已发表: 2016-07-13创建 WordPress 插件似乎是一项艰巨的任务。 在某些情况下确实如此——一些插件可能非常复杂。 但是根据您要添加的功能,许多功能实际上构建起来相当简单。 对插件的工作原理有一些基本了解后,可以快速创建插件。
插件去哪儿了?
WordPress文件夹结构
在开发开始之前,最好知道插件属于哪里。 让我们看一下基本应用程序目录中的 WordPress 文件夹结构。 在wp-content文件夹中,您将看到一个插件目录。 这是您所有个人插件所在的位置。
此文件夹中的插件可以是单个文件或子目录。 较小的插件通常只需要一个 .php 文件。 复杂的插件可能有多种文件类型(HTML、CSS 和 JavaScript 都是可能的)。 创建子目录有助于存放各种文件以及插件的 .php 函数。

操作和过滤器
在开始构建插件之前,最好了解一些基础知识以帮助您入门。 当您开始编写自己的插件时,一个很好的起点是学习操作和过滤器的工作原理。 了解基础知识会很有帮助,当您对此有更多疑问时,WordPress Codex 是一个很好的资源。
插件开发前
元信息非常重要,它也是告诉 WordPress 插件详细信息的信息。 插件有安装、删除、激活和停用的选项。 从技术上讲,您只需要 WordPress 的插件名称即可将您的文件建立为插件。 但是,最好提供其他信息,因为这将对您和您的用户有所帮助。
<?php /** * Plugin Name: Example Plugin * Plugin URI: http://mysite.com/ * Description: A brief description about your plugin. * Version: 1.0 (or whatever current version your plugin is on) * Author: Plugin Author's Name * Author URI: Author's website * License: A "Slug" license name e.g. GPL12 */
一个非常简单的插件
从小处着手是简化插件构建的好方法。 让我们创建一个非常简单的示例。 操作和过滤器使事情发生,所以让我们在所有帖子之后添加一行文本来测试一下。
在开发环境中工作总是好的,这在您尝试插件时尤其重要。
首先,创建一个新文件并确保它位于正确的位置。 将此代码复制并粘贴到您的主插件文件中并保存。 这被粘贴在元信息之后。
add_action( 'the_content', 'test_example_text' );
function test_example_text ( $content ) {
return $content .= '<p>This is my first plugin!</p>';
}
这是一个努力工作的钩子的例子。 通过挂钩the_content操作,这在 WordPress 呈现帖子内容时起作用。 WordPress 调用在add_action call下定义的test_example_text函数。
看到插件在行动
您之前可能已经这样做过,但是当您登录 WordPress 管理员时,您会在左侧看到插件选项。 我们的插件出现了,现在需要激活它。 一旦它被激活,它就会出现在帖子的末尾。


更复杂的插件
所以这个例子演示了插件如何工作的基础知识,但是如果你想做一些更有用的事情呢? 自定义帖子类型在自定义网站设计中经常使用,所以让我们从它开始。 您可以使用现有的插件,但从头开始创建一个插件是一种简化插件开发的好方法。
什么是 WordPress 中的自定义帖子类型?
页面和帖子是 WordPress 中最受欢迎的内容类型,但如果您想要更具体的内容怎么办? 在某些情况下,页面和帖子可能过于笼统,这就是自定义帖子类型变得方便的原因。 一个很好的例子是投资组合的自定义帖子类型。 这个想法是创建一个附加了不同帖子类型值的常规帖子。
如何在 WordPress 上创建投资组合网站
在网站上有一个投资组合页面可以用于很多事情。 根据定义,它是用来存放文件、地图、图纸、照片等材料的东西。金融术语中的投资组合参考...
您可以随意调用自定义帖子类型。 例如,如果您经营一个食品网站,您可以创建一个方便的食谱帖子类型。 此帖子类型可以具有不同的自定义字段,并具有自己的自定义类别结构。
创建自定义帖子类型
您需要做的第一件事实际上是创建自定义帖子类型。 使用与上面相同的文件结构,让我们添加我们的文件夹和 .php 文件。 假设元信息已经创建,我们将在元块之后添加我们的功能。
我们将为名为“Recipes”的自定义帖子类型创建一个插件,以演示创建更复杂插件的基础知识。
基础版
如果你看一下下面的代码片段,一开始就很简单。 我们将在左侧菜单中看到自定义帖子类型,以确保其有效。 register_post_type()用于一个函数,该函数与init操作挂钩。 有两个参数是自定义帖子类型和参数数组。
function recipe_custom_post_type() {
register_post_type( 'recipe', array( 'public' => true, 'label' => 'Recipes' ) );
}
add_action( 'init', 'recipe_custom_post_type' );

进阶版
这个插件的基本版本实际上可以工作,但是,需要更多的功能才能真正让它变得更好。 例如,标签仍在阅读“添加新帖子”。 我们希望这更加具体化; 毕竟,这就是我们不只使用普通帖子的原因。 可以使用标签属性进行自定义。

现在,让我们从头开始我们刚刚所做的并使用它来代替:
add_action( 'init', 'recipe_custom_post_type' );
add_filter( 'post_updated_messages', 'recipes_messages' );
function recipe_custom_post_type() {
$labels = array(
'name' => 'Recipes',
'singular_name' => 'Recipe',
'menu_name' => 'Recipe',
'name_admin_bar' => 'Recipe',
'add_new' => 'Add New',
'add_new_item' => 'Add New Recipe',
'new_item' => 'New Recipe',
'edit_item' => 'Edit Recipe',
'view_item' => 'View Recipe',
'all_items' => 'All Recipes',
'search_items' => 'Search Recipes',
'parent_item_colon' => 'Parent Recipes:',
'not_found' => 'No recipes found.',
'not_found_in_trash' => 'No recipes found in Trash.'
);
$args = array(
'public' => true,
'labels' => $labels,
'rewrite' => array( 'slug' => 'recipe' ),
'has_archive' => true,
'menu_position' => 20,
'menu_icon' => 'dashicons-carrot',
'taxonomies' => array( 'post_tag', 'category' ),
'supports' => array( 'title', 'editor', 'author', 'thumbnail', 'excerpt', 'custom-fields', 'comments' )
);
register_post_type( 'recipe', $args );
}
function recipes_messages( $messages ) {
$post = get_post();
$messages['recipe'] = array(
0 => '',
1 => 'Recipe updated.',
2 => 'Custom field updated.',
3 => 'Custom field deleted.',
4 => 'Recipe updated.',
5 => isset( $_GET['revision'] ) ? sprintf( 'Recipe restored to revision from %s',wp_post_revision_title( (int) $_GET['revision'], false ) ) : false,
6 => 'Recipe published.',
7 => 'Recipe saved.',
8 => 'Recipe submitted.',
9 => sprintf(
'Recipe scheduled for: <strong>%1$s</strong>.',
date_i18n( 'M j, Y @ G:i', strtotime( $post->post_date ) )
),
10 => 'Recipe draft updated.'
);
return $messages;
}


看看顶部的文字现在如何显示“添加新食谱”? 我们通过使用所需文本自定义“添加新项目”来实现这一点。


这里发生了很多事情,在处理参数时事情变得非常详细。 在视觉上很明显的一个是supports属性。 在这里,我们声明了标题、编辑者、作者、缩略图、摘录、自定义字段和评论。 这些显示在管理用户界面和前端的某些部分中。 taxonomies 属性允许您将自定义分类法分配给自定义帖子类型。

帖子类型交互消息
每当您进行保存、删除、搜索等操作时,您都会收到一条默认消息。 在我们的recipes_messages函数中,有一个这些消息的列表。 使用适当的消息为自定义帖子类型定义数组将确保以您喜欢的方式阅读自定义帖子类型。 措辞看起来非常特定于食谱,因此这与自定义帖子类型相得益彰。

完成插件后,您可以在 WordPress 插件目录中发布它,以便其他人也可以下载它。 如果是这种情况,包含readme.txt对那些正在搜索像您这样的插件的人很有帮助。 基本上,此文件将包含您的姓名和插件的功能,但您还可以包含有关每个修订的详细信息和有关更新的详细信息。
如您所见,插件可以非常简单或复杂。 创建插件并不像最初看起来那么棘手,并且是开发 WordPress 网站时要养成的好习惯。 它们允许轻松组织和在多个站点上重用的能力,使您的 WordPress 开发更加高效。

