plugin_action_links
默認(rèn)的,wordpress插件在插件列表頁(yè)(wp-admin/plugins.php)的插件名稱(chēng)下面只有啟用/禁用 和編輯兩個(gè)選項(xiàng),如果想添加鏈接進(jìn)去,我們就得用 plugin_action_links 這個(gè)Hook了,用例截圖:

代碼:
/**
* Plugin action links
*/
function cwp_plugin_action_links( $links, $file ) {
$start_link = '<a href="' . admin_url( 'index.php?page=coolwp-get-started' ) . '">' . esc_html__( 'Start', 'cwp' ) . '</a>';
$add_on_links ='<a href="'.CWP_DEV_PLUGIN_ADD_ON_URL.'">' . esc_html__( 'Add Ons', 'cwp' ) . '</a>';
if ( $file == 'wp-develop-mode/wp-develop-mode.php' )
array_unshift( $links, $start_link ,$add_on_links);
return $links;
}
add_filter( 'plugin_action_links', 'cwp_plugin_action_links', 10, 2 );
plugin_row_meta
在Wordpress插件描述(也就是插件名稱(chēng)右側(cè))下的默認(rèn)鏈接有:顯示為作者名稱(chēng)的作者鏈接、顯示為插件站點(diǎn)的插件鏈接,如果想在這里添加鏈接,就得使用 plugin_row_meta 這個(gè)Hook了,用例截圖:

上圖用對(duì)比的方式說(shuō)明了問(wèn)題:圖中上面的是Wordpress核心團(tuán)隊(duì)的導(dǎo)入插件,下面是我的示例插件,可以看出來(lái)示例插件比正常的插件多了兩個(gè)鏈接:‘Getting Started’和‘Add-ons’,下面是用例代碼:
/**
* Plugin row meta links
*/
function cwp_plugin_row_meta( $input, $file ) {
if ( $file != 'wp-develop-mode/wp-develop-mode.php' )
return $input;
$links = array(
'<a href="' . admin_url( 'index.php?page=coolwp-get-started' ) . '">' . esc_html__( 'Getting Started', 'cwp' ) . '</a>',
'<a href="'.CWP_DEV_PLUGIN_ADD_ON_URL.'">' . esc_html__( 'Add Ons', 'cwp' ) . '</a>',
);
$input = array_merge( $input, $links );
return $input;
}
add_filter( 'plugin_row_meta', 'cwp_plugin_row_meta', 10, 2 );
after_plugin_row_
這個(gè)hook不常用,不過(guò)并不是沒(méi)用,它可以用來(lái)在插件行(這里的插件行是指上述插件內(nèi)容所在的行)后面添加內(nèi)容,用例截圖:

上面截圖中的“Activate your license for automatic upgrades. Need a license? Purchase one”就是通過(guò)這個(gè)Hook添加的內(nèi)容,用例代碼如下:
/**
*Add your content after wordpress plugin row
*在插件列表插件項(xiàng)目后增加升級(jí)/輸入、購(gòu)買(mǎi)許可證的提示
*/
function cwp_add_notice_after_row(){
$license_key = trim( get_option ('my_plugin_license_key'));/*getting the plugin license */
$license_key_setting_page = admin_url('options-general.php?page=my-plugin-license-setting-page-slug' );/*define your license setting page link*/
if(!$license_key)/*if the license is null or false,display the following plugin meta after this plugin row*/
echo '</tr><tr class="plugin-update-tr"><td colspan="3"><div class="update-message"><a href="'.$license_key_setting_page.'">'.__('Activate your license','cwpsl').'</a> '.__('for automatic upgrades. Need a license?','cwpsl').' <a target="_new">'.__('Purchase one','cwpsl').'</a></div></td>';
}
add_action('after_plugin_row_'.plugin_basename(__FILE__), 'cwp_add_notice_after_row');
希望本文能對(duì)你的插件開(kāi)發(fā)有所幫助!






plugin_action_links這個(gè),會(huì)在plugins.php,顯示每個(gè)plugin的時(shí)候都會(huì)進(jìn)去轉(zhuǎn)一圈。
其實(shí)有個(gè)更好的帶通配符的鉤子,
plugin_action_links_{}
add_filter(‘plugin_action_links_’ . plugin_basename( __FILE__ ), ‘callback_func’, 9999, 2 );
}
上面這個(gè)定位在:
\wp-admin\includes\class-wp-plugins-list-table.php”(449,40):
$actions = apply_filters( $prefix . “plugin_action_links_$plugin_file”, $actions, $plugin_file, $plugin_data, $context );