第一個 wordpress plugin

首先閱讀一下 wordpress plugin handbook
https://developer.wordpress.org/plugins/ 所有開發指南跟規範都在這裡.

alt text for img

使用plugin 範本創建工具 :https://wppb.me/

alt text of image

需要填寫6項資料 :
plugin name: 不用解釋了
plugin slug : 就是post 跟在網址後面那串字
,跟 plugin name 一樣OK
plugin URI : plugin 的位置
Author Name,Author Email , Author URI :作者資訊
可參考: https://developer.wordpress.org/plugins/plugin-basics/header-requirements/ 的說明

alt text of image
This image has an empty alt attribute; its file name is image-52-1024x480.png

[Build Plugin] 下載範本,解壓縮就看到一個已經建好的plugin 範本結構

現在把整個 plugin目錄 拷貝(上傳)到 wordpress/wp-content/plugins 之下

alt text of image

這時候到你的wordpress網站,登入到管理後台,查看Plugins ,會發現你的 plugin 已經出現了

alt text of image

給 plugin 加上action links 如下圖的就是

alt text of image

要使用 add_filter plugin_action_links 來加入一個action link , 在 plugin-name.php 裡面加入以下代碼

add_filter( 'plugin_action_links_' . plugin_basename(__FILE__), 'catp_plugin_settings_link' );
function catp_plugin_settings_link( $links )
{
    echo "<script> alert('123');</script>" ;
    $url = 'https://www.google.com';
 
    $_link = '<a href="'.$url.'" target="_blank">' . __( 'Setting', 'domain' ) . '</a>';
 
    $links[] = $_link;
 
    return $links;
}

active 你的 plugin 就可以看到多了一個 Setting 的 action link (只有當plugin 是 activated時才會出現)

alt text of image

如果要在 admin_bar 新增一個項目 :

add_action('admin_menu', 'catp_plugin_setup_menu');
 
function catp_plugin_setup_menu(){
        add_menu_page( 'Test Plugin Page', 'CATP', 'manage_options', 'test-plugin', 'test_init' );
}
function test_init(){
        echo "<h1>888</h1>";
}

如果要在 post 本身的末尾加上內容,要使用 ‘the_content’

function to_footer($content) 
{

    return $content . 'I am in the footer';
}
//if (is_admin()) {  // this is wrong
if ( is_super_admin()) {  //this is right way
  add_action('the_content', 'to_footer');
}

注意 :if ( is_super_admin()) 我們只允許admin做動作 ,所以只有在admin登入的情況下,才會出現該內容

有關 wordpress 開發的 action , link , hook 等等 對第一次接觸的人來說,還真的有點不知從何開始,要一點時間熟悉 wordpress api 的用法. 經過一番的 google 跟 測試 , 終於完成第一個 wordpress plugin :

clone-and-translate-post

目前只是可以 work ,翻譯經過初步測試也還可以,離到達產品標準應該還有一點距離,有興趣可以一起來參與: https://github.com/jj449/clone-and-translate-post/upload/master

note :
menu出現位置?
1. add_options_page

function myplugin_register_options_page() {
  add_options_page('catp options', 'catp options', 'manage_options', 'myplugin', 'myplugin_options_page');
}
add_action('admin_menu', 'myplugin_register_options_page');

add_options_page 會使 menu出現在 Settings 之下

2. add_menu_page

function catp_plugin_setup_menu(){
        add_menu_page( 'Test Plugin Page', 'CATP', 'manage_options', 'test-plugin', 'test_init' );
}
add_action('admin_menu', 'catp_plugin_setup_menu');
add_menu_page 會使 menu出現在 admin-bar ?

3. add_submenu_page