主題開發中,get_option() 是從 wp_options 表讀取設定的核心函數,而 add_theme_page() 是在「外觀」選單下快速添加主題設置頁的捷徑。本文分享兩個函數的進階用法與最佳實踐組合拳。
get_option() 進階技巧:默認值優雅處理寫法一:手動判斷初始化(舊式)
if ( ! get_option('xiangzi') ) {
$default = array( 'title'=>'博客', 'name'=>'翔子', 'url'=>'pangbu.com' );
update_option('xiangzi', $default);
}
$xiangzi = get_option('xiangzi');
寫法二:利用第二參數直接指定默認值(推薦,WP 內建支援)
$default = array( 'title'=>'博客', 'name'=>'翔子', 'url'=>'pangbu.com' );
$xiangzi = get_option( 'xiangzi', $default );
第二參數僅在選項不存在時返回,不會寫入數據庫。若需持久化默認值,仍需配合 update_option() 在主題啟用鉤子 after_setup_theme 中初始化。
add_theme_page():零成本添加主題設置入口不同於 add_menu_page() 創建頂級選單,add_theme_page() 直接將頁面掛載在「外觀」→「主題設置」下,符合用戶預期,無需管理位置參數。
<?php
add_theme_page(
$page_title, // 頁面 title
$menu_title, // 子選單文字
$capability, // 權限(通常用 edit_theme_options)
$menu_slug, // 唯一 slug
$function // 渲染回調
);
?>
<?php
function xz_theme_options_add_page() {
add_theme_page(
'主題設置', // page_title
'主題設置', // menu_title
'edit_theme_options', // capability
'theme_options', // menu_slug
'xz_theme_op_page' // callback
);
}
function xz_theme_op_page() {
// 這裡輸出設定表單 HTML,配合 get_option() 讀取值
echo '<div class="wrap"><h1>主題設置頁面</h1></div>';
}
add_action( 'admin_menu', 'xz_theme_options_add_page' );
?>

雖然可直接在回調中輸出 <form>,但強烈建議使用 **Settings API**(register_setting()、add_settings_section()、add_settings_field())實現:
get_option() 返回值可能是序列化字串,**切勿直接 unserialize()**,WP 內部已自動反序列化mytheme_)防止衝突mytheme_options),減少數據庫查詢掌握 get_option() 默認值技巧與 add_theme_page() 快速接入,讓主題設置開發事半功倍,專注於業務邏輯而非樣板代碼。