如何構建您自己的 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 開發更加高效。

