WordPress 插件1

本地路徑

<?php echo plugin_dir_path(__FILE__);?>

把 PHP 常量 FILE 傳遞給了 plugin_dir_path() 函數(shù)。這會生成指向你的插件目錄的完整的本地路徑。/public_html/wp-content/plugins/my-custom-plugin/

<?php echo plugin_dir_path(__FILE__).'js/scripts.js';?>

這段代碼會輸出下面的結(jié)果:/public_html/wp-content/plugins/my-custom-plugin/js/scripts.js

URL路徑

site_url() 返回的是數(shù)據(jù)庫中 wp_options 表里面的 siteurl 字段值。這是指向 WordPress 核心文件的 URL。如果你的 WordPress 核心文件在你的服務(wù)器的子目錄中,比如 /wordpress,那么 site_url() 的值就會是 http://example.com/wordpress

home_url() 則從 wp_option 表中取得 home 字段的值。這個地址是你希望訪問你的 WordPress 網(wǎng)站的 URL 地址。例如,你的 WordPres 核心文件放在 /wordpress 目錄下,但是你希望你的 URL是 http://example.com,那么就要把 home 的值設(shè)置成 http://example.com。

plugins_url() 這個函數(shù)可以確定在插件目錄下的任何文件的完全 URL。

<?php plugins_url( $path, $plugin ); ?>

參數(shù):

  • $path — (string)(可選) — 相對于 插件 URL 的路徑
  • $plugin — (string)(可選) — 要相對的插件文件(如果是自己,就傳 FILE )

例如:要在插件中引用一個圖片文件,可以這樣子:

<?php echo '<img src="'.plugins_url('images/icon.png', __FILE__). '"/>';?>

第一個參數(shù)是要用到的圖片文件的相對路徑。第二個參數(shù)是要取相對路徑時的參考文件,本例中直接是 —FILE。上面代碼生成下面的 HTML 標簽:

<img src="http://example.com/wp-content/plugins/my-custom-plugin/images/icon.png"/>

activate/deactivate 函數(shù)

register_activation_hook()

為插件設(shè)置一些默認選項。也可以驗證插件和 WordPress 版本的兼容性。
這個插件接收兩個參數(shù):

<?php register_activation_hook( $file, $function ); ?>

參數(shù):
$file — (string)(必須) — 主插件文件的路徑。
$function — (string)(必須) — 當插件啟用時要執(zhí)行的函數(shù)。
下面是一個例子:

<?php
register_activation_hook( __FILE__, 'boj_install');
function boj_install()
 {
if( version_compare( get_bloginfo( 'version' ), '3.1', '<' ) ) 
{
deactivate_plugins( basename( __FILE__ ));
 //禁用插件
}
}
?>

我們使用 get_bloginfo() 函數(shù)來取得當前安裝的 WordPress 版本號。接著用 PHP 函數(shù) version_compare() 來驗證安裝的 WordPress 的版本是否至少為 3.1。如果低于 3.1,就調(diào)用 deactivate_plugins() 函數(shù)來 禁用插件。

在啟用時進行默認設(shè)置

另一個常用的啟用技術(shù)就是在你的插件啟用時為它設(shè)置默認選項。假設(shè)你的插件有許多許多選項,也許有一些選擇需要被設(shè)置才能保證插件正常工作。你可以再啟動時自動設(shè)置默認值,而不用讓用戶跑到設(shè)置頁面來親自設(shè)置。

<?php
 
register_activation_hook( __FILE__, 'boj_install');
 
function boj_istall() {
 
$boj_myplugin_options = array(
 
'view' => 'grid',
 
'food' => 'bazon',
 
'mode' => 'zombie'
 
);
 
update_option( 'boj_myplugin_options', $boj_myplugin_options );
 
}
 
?>
 
}
register_deactivation_hook() 函數(shù)

這個函數(shù)在插件被禁用時觸發(fā)。這個函數(shù)和前面的啟用函數(shù)一頁同樣接收兩個參數(shù)。

<?php register_deactivation_hook( $file, $function ); ?>

參數(shù):

  • $file — (string)(必須) — 主插件文件的路徑。
  • $function — (string)(必須) — 當插件禁用時要執(zhí)行的函數(shù)。
    下面是一個例子:
<?php 
 
register_deactivation_hook( __FILE__, 'boj_myplugin_uninstall' );
 
function boj_myplugin_unstall() {
 
// 執(zhí)行內(nèi)容
 
}
 
?>

在禁用插件時執(zhí)行 boj_myplugin_uninstall() 函數(shù)。

卸載的方法

uninstall.php

第一種方法:uninstall.php 文件:

<?php
 
// 如果 uninstall 不是從 WordPress 調(diào)用,則退出
 
if( !defined( 'WP_UNINSTALL_PLUGIN' ) )
 
exit();
 
// 從 options 表刪除選項
 
delete_option( 'boj_myplugin_options' );
 
// 刪除其他額外的選項和自定義表
 
?>

第一件要做的事就是驗證確實是 WordPress 在調(diào)用 uninstall.php 文件。通過嚴重 WP_UNINSTALL_PLUGIN 常量是否定義。如果沒有,立即退出。這是一個保證只有在刪除插件時才能夠執(zhí)行 uninstall.php 文件的安全的方法。

在驗證了這是合法的卸載調(diào)用以后,就可以從數(shù)據(jù)庫中刪除插件的設(shè)置項了。插件卸載腳本的目的是要從數(shù)據(jù)庫中刪除任何與插件相關(guān)的內(nèi)容。這包括刪除所有選項,已經(jīng)刪除所有自定義的表。你不需要操心刪除插件的文件或者目錄的事情,一旦卸載腳本執(zhí)行了,WordPress 會自動為你做這些事情。

卸載鉤子

卸載鉤子

第二種可用的卸載方法叫做卸載鉤子。如果你刪除一個不存在 uninstall.php 的插件,WordPress 會執(zhí)行卸載鉤子(如果存在的話).

<?php register_uninstall_hook( $file, $function ); ?>

參數(shù):

  • $file — (string)(必須) — 插件主文件的路徑
  • $function — (string)(必須) — 在插件卸載后要執(zhí)行的函數(shù)
    下面看卸載函數(shù)的例子:
<?php
 
register_activation_hook( __FILE__, 'boj_myplugin_activate' );
 
function boj_myplugin_activate() {
 
// 注冊卸載函數(shù)
 
register_uninstall_hook( __FILE__, 'boj_myplugin_uninstaller' );
 
}
 
function boj_myplugin_uninstaller() {
 
// 刪除插件創(chuàng)建的選擇,表等等
 
delete_option( 'boj_myplugin_options' );
 
}
 
?>

register_uninstall_hook() 必須在啟用函數(shù)中調(diào)用。因此要在使用 register_activation_hook() 函數(shù)執(zhí)行插件啟用的函數(shù)中包含 uninstall 鉤子。接著調(diào)用 uninstall 函數(shù)。注意:如果插件根目錄下包含 uninstall.php 文件,那么刪除鉤子是不會執(zhí)行的。

重要:要知道不能使用一個類的方法作為卸載鉤子的回調(diào)函數(shù)。因為卸載鉤子會保存一個 $this 的引用到數(shù)據(jù)庫中,它多那個頁面的加載來說是唯一的。

如本節(jié)中提醒的,使用卸載鉤子有許多陷阱。所以最好使用更簡潔的 uninstall.php 文件來進行卸載。

插件開發(fā)檢查列表

在開發(fā) WordPress 插件時,你需要記住許多事情來創(chuàng)建一個合適的插件基礎(chǔ)。下面的列表幫助你完成這個過程。跟隨這個列表,你就可以確保有一個合適的插件基礎(chǔ)了:

1.確定一個具有描述性的唯一的插件名

? ?1.1名字是否可以描述你的插件的功能
? ?1.2是否驗證了插件名在插件目錄中不存在

2.為插件設(shè)置一個唯一的前綴

? ?2.1前綴是否足夠特殊來避免沖突

3.建立插件的目錄結(jié)構(gòu)

? ?3.1是否需要 PHP 目錄
? ?3.2是否需要 JavaScript 目錄
? ?3.3是否需要 CSS 目錄
? ?3.4是否需要 images 目錄

建立默認的插件文件
建立和插件文件夾名同名的主插件文件
建立 uninstall.php 文件來執(zhí)行卸載過程
建立插件的頭部代碼

? ?設(shè)置你希望顯示的插件的名字
? ?添加一個詳細的插件目的的描述
? ?設(shè)置正確的版本
? ?確保設(shè)置了插件的 URI 和 作者的 URI 的值
? ?包括版權(quán)信息
? ?在插件頭下面直接包含版權(quán)信息

建立插件的啟用函數(shù)

? ?你的插件功能的實現(xiàn)是否需要一個特殊的或者更高的 WordPress?
? ?你的插件是否要在啟用時設(shè)置默認值?

建立插件的禁用函數(shù)

? ?你的插件是否要在禁用時執(zhí)行神馬東西?

建立插件的卸載腳本

? ?建立 uninstall.php 文件
? ?在文件中包含卸載腳本

文件引用

使用合適的目錄常量和函數(shù)來確定 WordPress 和插件中的路徑

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容