麻豆小视频在线观看_中文黄色一级片_久久久成人精品_成片免费观看视频大全_午夜精品久久久久久久99热浪潮_成人一区二区三区四区

首頁 > CMS > Wordpress > 正文

給WordPress添加主題管理選項

2024-09-07 00:52:11
字體:
來源:轉載
供稿:網友

默認的wordpress博客不具備主題管理選項了,如果我們要添加此功能需要對它進行二次開發了,下面一起來看一個例子。

做WordPress主題的時候,經常需要給主題添加管理選項,以便給主題用戶提供一些自定義的設置,免得改主題源代碼。網上已經有很多人分享了相關的教程,昨晚寫代碼的時候突然要用到這個功能,但是搜了好多版本,僅發現還是NeoEase的版本最順手,鑒于NeoEase的網站經常打不開了,有時候想看也看不了,本文純做記錄,方便以后查閱。

NeoEase的版本是屬于簡易版的,僅支持簡單的文本框、選項等功能,如果需要搭建帶酷炫的拖動等強大功能的選項頁面,可以看看本文末尾推薦的主題管理選項框架。

以下內容轉自 NeoEase

為主題添加一些管理選項并不是難事,你只要回寫完第一個選項處理,其他選項的處理就迎刃而解了。我們這次用 WordPress 自帶的主題 classic 作為例子,創建一個首頁公告欄的管理選項. 本教程需要一定的 HTML 基礎,并對 PHP 有初步了解.

后臺處理:

首先,我們要修改 function.php,主要的處理工作都在這個文件里面,如果主題沒有這個文件,就創建一個吧。 (沒有 function.php 說明主題不支持 Widget,可不是一個好習慣哦,還是趕緊新建一個吧,想讓主題支持 Widget 可以看看這里: 讓主題支持 Widget).

我的處理包括 3 大塊: 獲取選項,初始化,標簽頁操作界面。這里只創建一個公告欄,包括兩個選項 (是否顯示公告欄和公告欄內容)。如果要添加更多選項,也只需要代碼中 3 個 TODO 的位置上追加一些代碼而已。當然,你還需要改一下選項名稱,將 Classic 和 classic 全部之換掉.

  1. <?php 
  2.  
  3. /** 
  4.  
  5.  * 選項組類型 
  6.  
  7.  */ 
  8.  
  9. class ClassicOptions { 
  10.  
  11.    
  12.  
  13.     /* -- 獲取選項組 -- */ 
  14.  
  15.     function getOptions() { 
  16.  
  17.         // 在<a href="/database/database.html" target="_blank">數據庫</a>中獲取選項組 
  18.  
  19.         $options = get_option('classic_options'); 
  20.  
  21.         // 如果數據庫中不存在該選項組,設定這些選項的默認值,并將它們插入數據庫 
  22.  
  23.         if (!is_array($options)) { 
  24.  
  25.             $options['notice'] = false; 
  26.  
  27.             $options['notice_content'] = ''
  28.  
  29.             // TODO: 在這里追加其他選項 
  30.  
  31.             update_option('classic_options'$options); 
  32.  
  33.         } 
  34.  
  35.         // 返回選項組 
  36.  
  37.         return $options
  38.  
  39.     } 
  40.  
  41.    
  42.  
  43.     /* -- 初始化 -- */ 
  44.  
  45.     function init() { 
  46.  
  47.         // 如果是 POST 提交數據,對數據進行限制,并更新到數據庫 
  48.  
  49.         if(isset($_POST['classic_save'])) { 
  50.  
  51.             // 獲取選項組,因為有可能只修改部分選項,所以先整個拿下來再進行更改 
  52.  
  53.             $options = ClassicOptions::getOptions(); 
  54.  
  55.    
  56.  
  57.             // 數據限制 
  58.  
  59.             if ($_POST['notice']) { 
  60.  
  61.                 $options['notice'] = (bool)true; 
  62.  
  63.             } else { 
  64.  
  65.                 $options['notice'] = (bool)false; 
  66.  
  67.             } 
  68.  
  69.             $options['notice_content'] = stri<a href="/fw/photo.html" target="_blank">ps</a>lashes($_POST['notice_content']); 
  70.  
  71.    
  72.  
  73.             // TODO: 在這追加其他選項的限制處理 
  74.  
  75.    
  76.  
  77.             // 更新數據 
  78.  
  79.             update_option('classic_options'$options); 
  80.  
  81.    
  82.  
  83.         // 否則,重新獲取選項組,也就是對數據進行初始化 
  84.  
  85.         } else { 
  86.  
  87.             ClassicOptions::getOptions(); 
  88.  
  89.         } 
  90.  
  91.    
  92.  
  93.         // 在后臺 Design 頁面追加一個標簽頁,叫 Current Theme Options 
  94.  
  95.         add_theme_page("Current Theme Options""Current Theme Options"'edit_themes'basename(__FILE__), array('ClassicOptions''display')); 
  96.  
  97.     } 
  98.  
  99.    
  100.  
  101.     /* -- 標簽頁 -- */ 
  102.  
  103.     function display() { 
  104.  
  105.         $options = ClassicOptions::getOptions(); 
  106.  
  107. ?> 
  108.  
  109.    
  110.  
  111. <form action="#" method="post" enctype="multipart/form-data" name="classic_form" id="classic_form"
  112.  
  113.     <div class="wrap"
  114.  
  115.         <h2><?php _e('Current Theme Options''classic'); ?></h2> 
  116.  
  117.    
  118.  
  119.         <!-- 公告欄 --> 
  120.  
  121.         <table class="form-table"
  122.  
  123.             <tbody> 
  124.  
  125.                 <tr valign="top"
  126.  
  127.                     <th scope="row"
  128.  
  129.                         <?php _e('Notice''classic'); ?> 
  130.  
  131.                         <br/> 
  132.  
  133.                         <small style="font-weight:normal;"><?php _e('HTML enabled''classic') ?></small> 
  134.  
  135.                     </th> 
  136.  
  137.                     <td> 
  138.  
  139.                         <!-- 是否顯示公告欄 --> 
  140.  
  141.                         <label> 
  142.  
  143.                             <input name="notice" type="<a href="/tags.php/checkbox/" target="_blank">checkbox</a>" value="checkbox" <?php if($options['notice']) echo "checked='checked'"; ?> /> 
  144.  
  145.                              <?php _e('Show notice.''classic'); ?> 
  146.  
  147.                         </label> 
  148.  
  149.                         <br/> 
  150.  
  151.                         <!-- 公告欄內容 --> 
  152.  
  153.                         <label> 
  154.  
  155.                             <<a href="/tags.php/textarea/" target="_blank">textarea</a> name="notice_content" cols="50" rows="10" id="notice_content" style="width:98%;font-size:12px;" class="code"><?php echo($options['notice_content']); ?></textarea> 
  156.  
  157.                         </label> 
  158.  
  159.                     </td> 
  160.  
  161.                 </tr> 
  162.  
  163.             </tbody> 
  164.  
  165.         </table> 
  166.  
  167.    
  168.  
  169.         <!-- TODO: 在這里追加其他選項內容 --> 
  170.  
  171.    
  172.  
  173.         <!-- 提交按鈕 --> 
  174.  
  175.         <p class="submit"
  176.  
  177.             <input type="submit" name="classic_save" value="<?php _e('Update Options &raquo;', 'classic'); ?>" /> 
  178.  
  179.         </p> 
  180.  
  181.     </div> 
  182.  
  183.    
  184.  
  185. </form> 
  186.  
  187.    
  188.  
  189. <?php 
  190.  
  191.     } 
  192.  
  193. //Vevb.com 
  194.  
  195. /** 
  196.  
  197.  * 登記初始化方法 
  198.  
  199.  */ 
  200.  
  201. add_action('admin_menu'array('ClassicOptions''init')); 
  202. ?> 

前臺處理:

要公告欄在首頁上顯示,需要修改一下 index.php,這個比較簡單,只是通過一些判斷語句決定東西要不要顯示出來而已,當然,你可以進行其他操作,關鍵是獲取到選項的值,并對它們進行處理.

其實可以分為兩步:

獲取選項,對每個 PHP 文件,獲取一次就行了,可以在文件頂部執行,對選項進行處理,這里判斷成立的話就將公告內容顯示出來.

  1. <!-- 獲取選項 --> 
  2.  
  3. <?php $options = get_option('classic_options'); ?> 
  4.  
  5. <!-- 如果用戶選擇顯示公告欄,并且公告欄有內容,則顯示出來 --> 
  6.  
  7. <?php if($options['notice'] && $options['notice_content']) : ?> 
  8.  
  9.     <div id="notice"
  10.  
  11.         <div class="content"><?php echo($options['notice_content']); ?></div> 
  12.  
  13.     </div> 
  14.  
  15. <?php endif; ?> 

使用后臺選項開發框架,可以添加更復雜更強大的選項設置.

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 激情小说激情电影 | 狠狠操夜夜爱 | 免费黄色a | a视频网站 | 久久久成人精品视频 | 国产免费一区二区三区网站免费 | 欧美精品激情在线 | 国产在线色 | 久久噜噜噜 | 国产91影院 | 暖暖免费观看高清完整版电影 | 久久久久九九九女人毛片 | 国产成人高清成人av片在线看 | 色妞妞视频 | 在线播放一级片 | 亚洲精品一区国产精品丝瓜 | 在线免费观看欧美 | 成人福利软件 | chinese-xvideos| 久久综合狠狠综合久久 | 久久久电影电视剧免费看 | 亚洲欧洲日产v特级毛片 | 国产男人的天堂 | 91午夜理伦私人影院 | 久久久久中精品中文字幕19 | 91精品国产92久久久久 | 国产美女视频一区 | 国产精品v片在线观看不卡 成人一区二区三区在线 | 国产成人午夜高潮毛片 | 国产免费www | 羞羞网站入口 | 日韩高清影视 | 国产资源在线播放 | 午夜精品久久久久久久久久久久久蜜桃 | 久久精品视频2 | 天堂在线资源av | 九九热在线观看视频 | 日本在线播放一区二区三区 | 欧美一区二区黄 | 久久一级| 亚洲第一色片 |