文本是《50個(gè) WordPress 動(dòng)作掛鉤(共7篇)》專題的第 6 篇。閱讀本文前,建議先閱讀前面的文章:
如果你一直在更隨我們學(xué)習(xí)這個(gè)系列,那你應(yīng)該知道我們正在介紹 WordPress 的50個(gè)動(dòng)作掛鉤。如果你是剛加入我們,建議你先看下之前的文章,然后跟著繼續(xù)學(xué)習(xí)更多。
那樣的話可以讓你跟上我們現(xiàn)在的進(jìn)度。
讓我們開始吧!
在插件管理頁面插入<head>標(biāo)簽
通過admin_head-(plugin_page)動(dòng)作可以在指定的插件頁面插入代碼到<head>標(biāo)簽中。
向你的插件管理頁面添加樣式
如果你想要添加一些CSS樣式到你的插件選項(xiàng)頁面中,下面的代碼將會(huì)幫助到你:
<?php
add_action( 'admin_head-tools_page_myplugin/myplugin', 'admin_head_plugin_page_example' );
function admin_head_plugin_page_example() {
echo '<style type="text/css">'
. '/* your style here */'
. '</style>';
}
// Example Source: http://codex.wordpress.org/Plugin_API/Action_Reference/admin_head-(plugin_page)
?>
在你的CSS中修改注釋掉的代碼,把動(dòng)作名稱(tools_page_mypluin/mypluin)的第二部分替換為你自己的插件名稱,最后就能實(shí)現(xiàn)想要的效果。
在Pings觸發(fā)之前操作它
“Pings”是WordPress最古老的特色之一,pre_ping這個(gè)動(dòng)作可以讓我們?cè)趐ings觸發(fā)之前操作它。
禁止Pings自己
WordPress在執(zhí)行pings時(shí),無法區(qū)分內(nèi)部鏈接和外部鏈接。利用下面簡(jiǎn)短的代碼,你可以禁止對(duì)自己執(zhí)行pings:
<?php
add_action( 'pre_ping', 'pre_ping_example' );
function pre_ping_example( &$links ) {
foreach ( $links as $l => $link ) {
if ( 0 === strpos( $link, get_home_url() ) ) {
unset( $links[ $l ] );
}
}
}
// Example Source: http://wpdevsnippets.com/remove-slef-pings/
?>
WordPress在執(zhí)行pings時(shí),無法區(qū)分內(nèi)部鏈接和外部鏈接。利用下面簡(jiǎn)短的代碼,你可以禁止對(duì)自己執(zhí)行pings:
使用get_header()函數(shù)
get_header動(dòng)作會(huì)在模板調(diào)用get_header()函數(shù)時(shí)被觸發(fā),利用好這個(gè)函數(shù)可以修改WordPress前端的頭部(header)。
激活一個(gè)簡(jiǎn)單的維護(hù)模式
如果你很忙沒有時(shí)間安裝一個(gè)“維護(hù)模式”插件并設(shè)置它的選項(xiàng),可以簡(jiǎn)單地使用下面的代碼給除了管理員以外的用戶顯示wp_die()錯(cuò)誤:
<?php
add_action( 'get_header', 'get_header_example' );
function get_header_example() {
if ( ! current_user_can( 'activate_plugins' ) ) {
wp_die( 'The website will be back soon.' );
}
}
// Example Source: http://wp-snippets.com/articles/7-code-snippets-you-should-use-on-every-site/
?>
只有管理員(和超級(jí)管理員)擁有’activate_plugins’的權(quán)限,網(wǎng)站會(huì)對(duì)管理員以外的用戶關(guān)閉。
修改登錄頁面的<head>標(biāo)簽
login_head這個(gè)動(dòng)作可以幫我們控制登錄頁面的<head>標(biāo)簽
移除有錯(cuò)誤驗(yàn)證時(shí)的晃動(dòng)效果
如果你不喜歡在用戶提交錯(cuò)誤的登錄信息時(shí)的“晃動(dòng)”效果,你可以使用下面的代碼移除它:
<?php
add_action( 'login_head', 'login_head_example' );
function login_head_example() {
remove_action( 'login_head', 'wp_shake_js', 12 );
}
// Example Source: https://wordpress.org/support/topic/plugin-simplemodal-login-remove-shake-effect
?>
雖然我喜歡這樣的效果。
利用儀表盤的底部
在某些情況下,我們想要控制我們管理面板的底部——而不是每一個(gè)頁面的底部,但是在</body>標(biāo)簽之前。admin_footer動(dòng)作就是做這個(gè)的。
為文章狀態(tài)添加樣式
保持統(tǒng)一的顏色風(fēng)格是WordPress的管理面板美觀的一個(gè)原因,但是我認(rèn)為使用顏色代碼來使不同狀態(tài)的文章有不同的顏色,這樣的做法不會(huì)影響美觀。
如果你喜歡我的這種做法,并且想要通過顏色來區(qū)分草稿、已發(fā)布文章、或其他狀態(tài)的文章,那么就可以使用下面的代碼:
<?php
add_action( 'admin_footer', 'admin_footer_example' );
function admin_footer_example() {
echo '<style type="text/css">
.status-draft { background-color: #FCE3F2; }
.status-pending { background-color: #87C5D6; }
.status-future { background-color: #C6EBF5; }
.status-private { background-color: #F2D46F; }
</style>';
}
// Example Source: http://wpsnipp.com/index.php/functions-php/change-admin-postpage-color-by-status-draft-pending-published-future-private/
?>
在登錄頁面添加腳本和樣式
我們可以使用wp_enqueue_scripts向前臺(tái)添加一些東西,并且我們可以使用admin_enqueue_scripts向后臺(tái)添加?xùn)|西。那么登陸頁呢?你是不是已經(jīng)猜到了:這次是login_enqueue_scripts 這個(gè)鉤子!
修改登錄表單上面的Logo
我喜歡WordPress的Logo,但我不認(rèn)為每次用戶登錄到網(wǎng)站都應(yīng)該這么顯示。如果你的想法跟我一樣,那么你可以利用下面這段很有用的代碼把WordPress的Logo替換成自己想要的圖片。
<?php
add_action( 'login_enqueue_scripts', 'login_enqueue_scripts_example' );
function login_enqueue_scripts_example() {
echo '<style type="text/css">'
. '#login h1 a {'
. 'background-image: url(' . get_bloginfo( 'template_directory' ) . '/images/login-logo.png);'
. 'padding-bottom: 30px;'
. '}'
. '</style>';
}
// Example Source: http://wpsnippy.com/add-custom-login-logo-in-your-wordpress-blog/
?>
把login-logo.png這個(gè)文件放到你的主題中的/images/目錄里就可以了!
在用戶列表中添加自定義列
你知道用戶列表是在管理面板中的“所有用戶”頁面中嗎?manage_users_custom_column這個(gè)動(dòng)作允許我們?cè)趯?duì)應(yīng)的過濾器的幫助下添加新的自定義列。
在一列中顯示用戶的注冊(cè)日期
假設(shè)你需要看到你的用戶的注冊(cè)日期。你可通過查詢數(shù)據(jù)庫來獲得該信息,或者你也可以使用這段代碼在用戶列表中添加一個(gè)擴(kuò)展的列來顯示:
<?php
add_action( 'manage_users_custom_column', 'manage_users_custom_column_example', 10, 3 );
add_filter( 'manage_users_columns', 'manage_users_columns_example' );
// create a new column named "Zip Code"
function manage_users_columns_example( $columns ) {
$columns['user_registered'] = __( 'Registration Date', 'theme-name' );
return $columns;
}
// fill the column cells with the registration dates
function manage_users_custom_column_example( $value, $column_name, $user_id ) {
if ( 'user_registered' == $column_name ) {
$userdata = get_userdata( $user_id );
return $userdata->user_registered;
}
}
// Example Source (Idea): http://tommcfarlin.com/add-custom-user-meta-during-registration/
?>
現(xiàn)在你可以知道你的用戶更多的信息了。
利用插件激活機(jī)制
當(dāng)需要知道一個(gè)插件是否已經(jīng)在WordPress中被激活時(shí)你會(huì)怎么做?你可以使用activated_plugin這個(gè)鉤子:這個(gè)動(dòng)作會(huì)在插件激活時(shí)觸發(fā)。
當(dāng)有插件被激活時(shí)就給管理員發(fā)送一封郵件
假設(shè)你有很多客戶網(wǎng)站(使用你的郵件地址安裝的),并且你需要在客戶安裝并激活來一個(gè)新的插件時(shí)通知到你。
你可以使用下面這個(gè)函數(shù)并掛載到 activated_plugins 鉤子就可以了:
<?php
add_action( 'activated_plugin', 'activated_plugin_example', 10, 2);
function activated_plugin_example( $plugin, $network_activation ) {
$to = get_option( 'admin_email' );
$subject = 'A plugin has been activated';
$body = "Hey,\n\nThe following plugin has just been activated:\n\n$plugin\n\nCheers!";
wp_mail( $to, $subject, $body );
}
?>
操作管理界面配色方案選項(xiàng)
從WordPress的3.0版本開始,對(duì)管理面板有了“配色方案”這個(gè)功能,并且允許我們編輯,添加或者刪除配色方案。admin_color_scheme_picker 為用戶改變配色方案提供了可能。
移除“管理界面配色方案”選項(xiàng)
如果你想禁止用戶更改管理界面配色方案的話(這么說吧,因?yàn)槟阌幸粋€(gè)特殊的配色方案并且不希望你的用戶把這個(gè)改回到默認(rèn)的狀態(tài)),那么使用下面的代碼就可以移除這個(gè)選項(xiàng):
<?php
if( is_admin() ) {
remove_action( 'admin_color_scheme_picker', 'admin_color_scheme_picker' );
}
// Example Source: http://wpsnipp.com/index.php/functions-php/remove-admin-color-scheme-picker-from-profile/
?>
嘿,我們剛剛從一個(gè)動(dòng)作鉤子中移除了一個(gè)相同名字的函數(shù)。我知道,這個(gè)有點(diǎn)奇怪。
操作登出進(jìn)程
用戶會(huì)做登錄,登出操作,當(dāng)他們登出賬號(hào)時(shí),wp_logout動(dòng)作就會(huì)被調(diào)用。
當(dāng)用戶登出后重定向到首頁
從一個(gè)WordPress網(wǎng)站登出是有點(diǎn)奇怪:你會(huì)被重定向到登錄頁面,WordPress需要你重新登錄。這里有個(gè)方案可以改變這種情況并且讓用戶登出后重定向到首頁:
<?php
add_action( 'wp_logout', 'wp_logout_example' );
function wp_logout_example() {
wp_redirect( home_url() );
exit();
}
// Example Source: http://wpsnippy.com/auto-redirect-users-after-logout/
?>
現(xiàn)在每次用戶退出后,他們將會(huì)看到首頁而不是登錄表單。
小結(jié)
我們剛剛結(jié)束了50個(gè)動(dòng)作的最后一批,我們希望你喜歡并從中學(xué)習(xí)到了新的知識(shí),我們將會(huì)有個(gè)快速回顧來看一下我們介紹過的內(nèi)容并結(jié)束這個(gè)系列。
同時(shí),我也想要聽到你的想法。關(guān)于你對(duì)這些動(dòng)作的想法?請(qǐng)?jiān)谙旅婊靥H绻阆矚g這篇文章,不要忘記分享它!
原文出自:http://code.tutsplus.com/tutorials/fifty-actions-of-wordpress-50-examples-41-to-50–cms-21582
由 surenpi.com@wordpress大學(xué) 原創(chuàng)翻譯,未經(jīng)允許,禁止轉(zhuǎn)載和采用本譯文。
您已閱讀完《50個(gè) WordPress 動(dòng)作掛鉤(共7篇)》專題的第 6 篇。請(qǐng)繼續(xù)閱讀該專題下面的文章:





