wordpress 外掛 建站
外掛頭資訊
/*
Plugin Name: xl_test_plugins
Description: 我學習外掛的測試外掛
Version: 1.0
Author: 小柳
*/
-----------------------------------------------------------------
//設定時區
date_default_timezone_set('Asia/Shanghai');
-----------------------------------------------------------------
一些常用的鉤子
init
wp_head
wp_enqueue_scripts
wp_footer
save_post 儲存文章
wp_trash_post 文章被放入回收站
delete_post 文章被刪除
wp_insert_comment 插入評論時候
user_register
remove_action() 移除動作
remove_all_action() 移除所有動作
-----------------------------------------------------------------
// 定義外掛啟動時的方法
register_activation_hook( __FILE__, 'xl_sayhello');
function xl_sayhello(){
update_option( "xl_sayhello", "hello everyone" );
}
//定義外掛停用時候呼叫的方法
register_deactivation_hook( __FILE__, 'xl_saygoodbye');
function xl_saygoodbye(){
update_option("xl_saygoodbye","goodbye");
}
-----------------------------------------------------------------
uninstall.php 外掛刪除時候,刪掉建立的資料
// 如果 uninstall 不是從 WordPress 呼叫,則退出
if( !defined( 'WP_UNINSTALL_PLUGIN' ) )
exit();
//刪除外掛建立的專案,以確保不佔用資料庫資源
delete_option( 'xl_sayhello' );
delete_option( 'xl_saygoodbye' );
-----------------------------------------------------------------
//儲存文章的時候,更新文章的修改時間
add_action( 'save_post', 'save_post_meta', 10, 2 );
function save_post_meta( $post_id, $post ) {
update_post_meta( $post_id, "save-time", "更新時間:" . date("Y-m-d H:i:s") );
}
//在輸出內容之前,給頁面管理新增摘要功能
add_action( 'init', 'hc_add_excerpts_to_pages' );
function hc_add_excerpts_to_pages() {
//給頁面管理新增摘要的功能
add_post_type_support( 'page', array( 'excerpt' ) );
}
//wp_head鉤子
add_action('wp_head','hc_wp_head');
function hc_wp_head() {
//只有首頁輸出描述
if( is_home() ){ ?>
<meta name="description" content="<? bloginfo('description'); ?>" />
<? }
}
//自定義引用樣式表
function hc_enqueue_style() {
wp_enqueue_style( 'core', plugins_url('css/hc_copyrighy.css', __FILE__) , false );
}
//自定義引用指令碼檔案
function hc_enqueue_script() {
wp_enqueue_script( 'my-js', plugins_url('js/hc_copyrighy.js', __FILE__), false );
}
//引用檔案的鉤子
add_action( 'wp_enqueue_scripts', 'hc_enqueue_style', 5 );
add_action( 'wp_enqueue_scripts', 'hc_enqueue_script', 7 );
//刪除所有掛載在 wp_enqueue_scripts 鉤子上的方法
remove_all_actions( 'wp_enqueue_scripts', 5 );
//評論被新增的時候觸發
add_action( 'wp_insert_comment', 'comment_inserted', 10, 2 );
//移除 wp_insert_comment 鉤子上的 comment_inserted 方法
remove_action( 'wp_insert_comment', 'comment_inserted', 10 );
function comment_inserted($comment_id, $comment_object ) {
//獲取該評論所在文章的評論總數
$comments_count = wp_count_comments( $comment_object->comment_post_ID );
$commentarr = array();
$commentarr['comment_ID'] = $comment_id;
//修改評論的內容,在評論內容前加上 “第{$comments_count->total_comments}個評論:” 這麼一段字串
$commentarr['comment_content'] = "第{$comments_count->total_comments}個評論:" . $comment_object->comment_content;
wp_update_comment( $commentarr );
}
add_action( 'user_register', 'myplugin_registration_save', 10, 1 );
function myplugin_registration_save( $user_id ) {
//將新使用者的個人說明,設定為註冊時間
wp_update_user( array( 'ID' => $user_id, 'description' => "註冊時間:" . date("Y-m-d H:i:s") ) );
}
-----------------------------------------------------------------