亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 網(wǎng)站 > CMS建站 > 正文

實現(xiàn)WordPress主題側(cè)邊欄切換功能的PHP腳本詳解

2020-03-22 17:34:29
字體:
供稿:網(wǎng)友
作為主題的制作者, 除了實現(xiàn)功能, 展示界面, 還有責任使主題靈活多變, 以滿足更多人不同的需求.
可能一些朋友曾為選用雙欄主題 (單側(cè)邊欄) 還是三欄主題 (雙側(cè)邊欄) 而煩惱過. 下面我們以 Classic 主題為例, 談談如何在主題中方便地切換單側(cè)邊欄和雙側(cè)邊欄. 最后我會提供修改后的主題.
添加管理選項
后臺處理
首先, 我們要修改 function.php, 主要的處理工作都在這個文件里面, 如果主題沒有這個文件, 就創(chuàng)建一個吧. (沒有 function.php 說明主題不支持 Widget, 可不是一個好習慣哦, 還是趕緊新建一個吧)
我的處理包括 3 大塊: 獲取選項, 初始化, 標簽頁操作界面. 這里只創(chuàng)建一個公告欄, 包括兩個選項 (是否顯示公告欄和公告欄內(nèi)容). 如果要添加更多選項, 也只需要代碼中 3 個 TODO 的位置上追加一些代碼而已. 當然, 你還需要改一下選項名稱, 將 Classic 和 html' target='_blank'>classic 全部之換掉.
* 選項組類型class ClassicOptions { /* -- 獲取選項組 -- */ function getOptions() { // 在數(shù)據(jù)庫中獲取選項組 $options = get_option('classic_options'); // 如果數(shù)據(jù)庫中不存在該選項組, 設(shè)定這些選項的默認值, 并將它們插入數(shù)據(jù)庫 if (!is_array($options)) { $options['notice'] = false; $options['notice_content'] = ''; // TODO: 在這里追加其他選項 update_option('classic_options', $options); // 返回選項組 return $options; /* -- 初始化 -- */ function init() { // 如果是 POST 提交數(shù)據(jù), 對數(shù)據(jù)進行限制, 并更新到數(shù)據(jù)庫 if(isset($_POST['classic_save'])) { // 獲取選項組, 因為有可能只修改部分選項, 所以先整個拿下來再進行更改 $options = ClassicOptions::getOptions(); // 數(shù)據(jù)限制 if ($_POST['notice']) { $options['notice'] = (bool)true; } else { $options['notice'] = (bool)false; $options['notice_content'] = stripslashes($_POST['notice_content']); // TODO: 在這追加其他選項的限制處理 // 更新數(shù)據(jù) update_option('classic_options', $options); // 否則, 重新獲取選項組, 也就是對數(shù)據(jù)進行初始化 } else { ClassicOptions::getOptions(); // 在后臺 Design 頁面追加一個標簽頁, 叫 Current Theme Options add_theme_page("Current Theme Options", "Current Theme Options", 'edit_themes', basename(__FILE__), array('ClassicOptions', 'display')); /* -- 標簽頁 -- */ function display() { $options = ClassicOptions::getOptions();
form action="#" method="post" enctype="multipart/form-data" name="classic_form" id="classic_form" div h2 php _e('Current Theme Options', 'classic'); /h2 !-- 公告欄 -- table tbody tr valign="top" th scope="row" php _e('Notice', 'classic'); br/ small php _e('HTML enabled', 'classic') /small /th !-- 是否顯示公告欄 -- label input name="notice" type="checkbox" value="checkbox" php if($options['notice']) echo "checked='checked'"; / php _e('Show notice.', 'classic'); /label br/ !-- 公告欄內(nèi)容 -- label textarea name="notice_content" cols="50" rows="10" id="notice_content" php echo($options['notice_content']); /textarea /label /td /tr /tbody /table !-- TODO: 在這里追加其他選項內(nèi)容 -- !-- 提交按鈕 -- input type="submit" name="classic_save" value=" php _e('Update Options ', 'classic'); " / /div /form * 登記初始化方法add_action('admin_menu', array('ClassicOptions', 'init'));
前臺處理要公告欄在首頁上顯示, 需要修改一下 index.php, 這個比較簡單, 只是通過一些判斷語句決定東西要不要顯示出來而已. 當然, 你可以進行其他操作, 關(guān)鍵是獲取到選項的值, 并對它們進行處理.
其實可以分為兩步:獲取選項 (對每個 PHP 文件, 獲取一次就行了, 可以在文件頂部執(zhí)行)
對選項進行處理 (這里判斷成立的話就將公告內(nèi)容顯示出來)
!-- 獲取選項 -- php $options = get_option('classic_options'); !-- 如果用戶選擇顯示公告欄, 并且公告欄有內(nèi)容, 則顯示出來 -- php if($options['notice'] && $options['notice_content']) : div id="notice" div php echo($options['notice_content']); /div /div php endif; 可以使用管理項來控制側(cè)邊欄的數(shù)量, 在主題文件中獲取側(cè)邊欄的數(shù)量, 對不同的數(shù)量作出不同的處理, 以達到在不同數(shù)量側(cè)邊欄之間切換的目的.// 側(cè)邊欄數(shù)量, 默認為單側(cè)邊欄$options['sidebar'] = 1;// 獲得最新提交的值$options['sidebar'] = $_POST['sidebar']; select name="sidebar" size="1" !-- 單側(cè)邊欄 -- option value="1" php if($options['sidebar'] != 2) echo ' selected '; php _e('Single', 'classic'); /option !-- 雙側(cè)邊欄 -- option value="2" php if($options['sidebar'] == 2) echo ' selected '; php _e('Double', 'classic'); /option /select php _e('sidebar(s)', 'classic'); .添加 Widget 支持因為要在單側(cè)邊欄和雙側(cè)邊欄中切換, 所以我們需要對不同的兩種模式定義兩個 Widget 初始化的分支.
這里比較特殊, 為了在代碼中正確獲取 Widget 信息, 就算是單側(cè)邊欄也需要起一個別名. 就像代碼中的 Sidebar_single. 當側(cè)邊欄個數(shù)為 1 時, 登記 Sidebar_single. 當側(cè)邊欄個數(shù)為 2 時, 登記 Sidebar_top 和 Sidebar_bottom.// Widgets$options = get_option('classic_options');// 單側(cè)邊欄if(function_exists('register_sidebar') && $options['sidebar'] == 1) { register_sidebar(array( 'name' = 'Sidebar_single', 'before_widget' = ' li id="%1$s" ', 'after_widget' = ' /li ', 'before_title' = ' h3 ', 'after_title' = ' /h3 '// 雙側(cè)邊欄} else if(function_exists('register_sidebar') && $options['sidebar'] == 2) { register_sidebar(array( 'name' = 'Sidebar_bottom', 'before_widget' = ' li id="%1$s" ', 'after_widget' = ' /li ', 'before_title' = ' h3 ', 'after_title' = ' /h3 ' register_sidebar(array( 'name' = 'Sidebar_top', 'before_widget' = ' li id="%1$s" ', 'after_widget' = ' /li ', 'before_title' = ' h3 ', 'after_title' = ' /h3 '修改側(cè)邊欄結(jié)構(gòu)首先要明確, 我們現(xiàn)在需要雙側(cè)邊欄結(jié)構(gòu). 怎樣將雙側(cè)邊欄變?yōu)閱蝹?cè)邊欄呢 只要將前一個側(cè)邊欄的結(jié)束標簽和后一個側(cè)邊欄的開始標簽刪除, 兩個側(cè)邊欄就合并為一個側(cè)邊欄了. 單純的文字很難將我的想法和實現(xiàn)表達出來, 你可以接著看下面的代碼和示例圖片. php if ( !function_exists('dynamic_sidebar') || !dynamic_sidebar('sidebar_single') ) : // single php if ( !function_exists('dynamic_sidebar') || !dynamic_sidebar('sidebar_top') ) : // top !-- TODO: 頂部側(cè)邊欄內(nèi)容 -- php endif; // top php if ($options['sidebar'] = 2) : /ul php endif; php if ( !function_exists('dynamic_sidebar') || !dynamic_sidebar('sidebar_bottom') ) : // bottom !-- TODO: 底部側(cè)邊欄內(nèi)容 -- php endif; // bottom php endif; // single /ul OK, 這就是側(cè)邊欄代碼結(jié)構(gòu)了. 它可以完美得實現(xiàn)單雙側(cè)邊欄間的切換. 但它是怎么工作的呢 我將在后面用圖片列出它的 6 種可能出現(xiàn)的狀態(tài).
因為主題已經(jīng)支持 Widget 了, 所以代碼中 function_exists('dynamic_sidebar') === true, 則 !function_exists('dynamic_sidebar') === false.
記得添加 Widget 支持時寫的代碼嗎 側(cè)邊欄為 1 時 sidebar_single 有效, 側(cè)邊欄為 2 時, sidebar_top 和 sidebar_bottom 有效. 這是貫穿整個思路的關(guān)鍵.備注: 紅色: 表示選中代碼的值是 false, 不通過 綠色: 表示選中代碼的值是 true, 通過 藍色: 表示選中部分將被選用的 widgets 所取代 灰色: 表示選中部分代碼將會失效狀態(tài)一: 單側(cè)邊欄, 沒使用 Widget
狀態(tài)二:雙側(cè)邊欄, 沒使用 Widget
狀態(tài)三: 單側(cè)邊欄, 使用 Widget
狀態(tài)四: 雙側(cè)邊欄, 頂部側(cè)邊欄使用 Widget
狀態(tài)五: 雙側(cè)邊欄, 底部側(cè)邊欄使用 Widget
狀態(tài)六: 雙側(cè)邊欄, 頂部和底部側(cè)邊欄都使用 Widget
PHP教程

鄭重聲明:本文版權(quán)歸原作者所有,轉(zhuǎn)載文章僅為傳播更多信息之目的,如作者信息標記有誤,請第一時間聯(lián)系我們修改或刪除,多謝。

發(fā)表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發(fā)表

圖片精選

天堂在线精品视频| 91官网在线| 欧美69精品久久久久久不卡| 自拍偷拍第八页| 欧美专区在线视频| 亚洲国产毛片aaaaa无费看| 884aa四虎影成人精品一区| 国产免费大片| 五月天丁香社区| 日韩精品人妻中文字幕| 中国在线观看免费国语版电影| 欧美在线一区二区视频| 国产精品国产三级国产专区53| 大香一本蕉伊线亚洲网| 色乱码一区二区三区在线| 日韩资源在线| 亚洲欧洲三级电影| 国产伦精品一区二区三区视频金莲| 一本一本久久a久久| 国产经典第一页| 中文字幕成人乱码在线电影| 欧美成人精品激情在线观看| 国产精品18久久久久久久久久久久| 欧美伊久线香蕉线新在线| 超碰超碰97| 男人天堂网站在线| 青梅竹马是消防员在线| 国产亚洲欧美日韩精品| 中文成人无字幕乱码精品区| 欧美一区二区私人影院日本| 肉丝美足丝袜一区二区三区四| 欧美色图色就是色| 自拍视频一区二区| 99re8这里只有精品| 午夜精品福利一区二区| jazzjazz国产精品麻豆| 99re热视频这里只精品| 中文字幕视频精品一区二区三区| 亚洲高清不卡在线观看| 国产综合内射日韩久| 国产成人免费av在线| 麻豆视频入口| 天天综合天天干| 亚洲国产精品麻豆| 日本免费观看网站| 99久久精品一区二区三区| 在线免费视频你懂得| 97av中文字幕| 亚洲精品成人久久久998| 精品成在人线av无码免费看| 欧美 国产 日本| 中文字幕精品www乱入免费视频| 91精品国产麻豆国产在线观看| 亚洲网站免费观看| a级在线观看视频| 999久久久| 精品一区二区三区四区在线| 日韩精品在线观看网站| 成年人国产精品| 好吊色欧美一区二区三区四区| 日韩特黄一级片| 亚洲在线天堂| 亚洲国产日韩综合久久精品| 爱啪导航一精品导航站| 成人午夜免费视频| 交换国产精品视频一区| 在线视频自拍| 精品一区二区三孕妇视频| gogo高清午夜人体在线| 一二三四视频在线中文| 欧美日韩国产在线播放| 亚洲影视在线观看| 精品国产欧美成人夜夜嗨| 欧美理论电影在线观看| 樱花草www在线| 亚洲v天堂v手机在线| 国产一区二区三区视频免费| 中文字幕在线免费不卡| 精品久久国产字幕高潮| 星空影院最新电视剧免费观看| 亚洲第五色综合网| 美女黄色网址| 久久久久久久久久久久久久久久久久av| 一卡二卡三卡在线观看| 黄色影视在线观看| 国产天堂av在线| 激情成人亚洲| 国产精品免费观看高清| 26uuu欧美| 欧美jizz19性欧美| 成人精品毛片| 成人自拍视频网站| 成年永久一区二区三区免费视频| 97久久久免费福利网址| www.av毛片| 性欧美18+| 李宗瑞系列合集久久| 26uuu久久天堂性欧美| www.九九热.com| 日韩av在线天堂| av免费观看不卡| 国产成人激情小视频| 黑人巨大精品欧美一区二区桃花岛| 国产精品影视网| 欧美做受xxxxxⅹ性视频| 91成人破解版| 亚洲乱码国产乱码精品精可以看| 中文字幕中文字幕在线中一区高清| 亚洲精品菠萝久久久久久久| 无码人妻丰满熟妇奶水区码| 涩涩网在线视频| 日韩黄色三级在线观看| 色综合久久88| 久久亚洲精品国产精品紫薇| free极度另类性欧美| 黑丝美女一区二区| 欧美日韩福利视频| 性欧美lx╳lx╳| 久久日韩视频| 香蕉成人伊视频在线观看| 曰本一区二区三区视频| 亚洲欧美日韩人成在线播放| 国产精品美日韩| 国产精品一区二区三区免费视频| 国产裸体美女永久免费无遮挡| 色8久久影院午夜场| 欧美日韩在线看| 91成人破解版| 91观看网站| 偷拍视屏一区| v8888av| 一区二区三区免费高清视频| 2020av在线| 欧美成人三级视频网站| 欧美成人欧美edvon| 国产精品1区2区3区| www999久久| 欧洲一区在线观看| 极品尤物一区二区| 亚洲一区二区三区四区在线播放| 午夜激情视频网| 中文一区二区三区四区| 欧美精品久久久久久久免费| 无码 人妻 在线 视频| av电影在线网站| 性金发美女69hd大尺寸| 网友自拍区视频精品| 在线电影中文日韩| 夜夜爽夜夜操| 久操视频免费在线观看| silk一区二区三区精品视频| 7777精品久久久大香线蕉小说| 妺妺窝人体色WWW精品| 欧美特黄一级大片| 色综合一本到久久亚洲91| 在线观看欧美激情| 欧美巨大丰满猛性社交| 91在线观看免费高清| 国产农村一级特黄α**毛片| 日韩人妻无码一区二区三区99| 亚洲日本成人在线观看| 蜜桃av免费看| 精品理论电影在线| www.日本精品| 永久免费看片视频教学| 美女主播精品视频一二三四| 久久精品视频1| 超碰国产精品一区二页| 五月天视频一区| 国内外成人免费激情在线视频| 精品美女一区二区| 91精品国产高清一区二区三区蜜臀| 成+人+亚洲+综合天堂| 幼a在线观看| 午夜精品视频一区| 国产偷激情在线| 国产一区二区三区免费不卡| 91麻豆精品国产91久久久更新资源速度超快| av 一区二区三区| 久久丁香四色| 欧美日韩国产精选| 欧美午夜片欧美片在线观看| 国内成人精品视频| 中文字幕第一页亚洲| 亚洲成人一级片| 91一区在线观看| 性xx无遮挡| 亚洲精品日韩av| 日日噜噜噜噜人人爽亚洲精品| 亚洲一区在线播放| 免费看日本一区二区| 97香蕉久久| 老牛影视av一区二区在线观看| 欧美女同网站| 四虎国产成人免费观看| 国产精品久久一级| 九九热线视频只有这里最精品| 欧美黄片一区二区三区| 伊人久久精品一区二区三区| 欧美男女爱爱视频| 亚洲深夜视频| 一二三四日本中文字幕| 精品三级在线观看视频| 欧美vide| 国产亚洲精品美女久久久久| 三级福利视频| 亚洲在线第一页| 一个色妞综合视频在线观看| 日韩成人伦理电影在线观看| 久久久久久国产免费a片| 精品国产18久久久久久洗澡| 亚洲免费av一区二区三区| 天天综合狠狠精品| 欧美激情欧美激情| www.亚洲.com| 不卡一区二区在线观看| 美女黄网久久| 亚洲成人久久影院| 男女午夜视频在线观看| 99re成人在线| 欧美日韩一区二区三区在线| 国精一区二区| 永久久久久久久| 免费人成网站在线观看欧美高清| 人妻 丝袜美腿 中文字幕| 欧美日本免费一区二区三区| 国产欧美88| 久久免费精品国产久精品久久久久| 免费在线看黄网址| 欧美日韩一区二区三区免费看| 涩涩网站在线观看| 国产成人精品网| 亚洲精品久久久久久久久久久久久久| 青娱乐在线视频观看| 欧美在线免费视频| 日本午夜精品电影| 韩曰欧美视频免费观看| 国产在线98福利播放视频| 在线观看男女av免费网址| 欧美精品一区二区蜜臀亚洲| 国产一区二区三区精品久久久| 日韩在线免费| 中文在线免费视频| 韩国在线视频一区| 2019年精品视频自拍| 深夜宅男网站免费进入| 日韩三区免费| 精品无人乱码| 欧美视频在线播放一区| 亚洲国产精品t66y| 2欧美一区二区三区在线观看视频| 91久久夜色精品国产按摩| 色综合影院在线| 少妇免费毛片久久久久久久久| 销魂美女一区二区三区视频在线| 日韩极品在线观看| 国产日韩欧美一区二区| 久久久久免费| 国产精品69精品一区二区三区| 久久狠狠亚洲综合| 亚洲精品乱码久久久久久久| aⅴ在线视频男人的天堂| 国产精品久久久久久福利| 欧洲精品一区二区三区在线观看| 日韩免费观看一区二区| 国产亚洲精品久久久久久无几年桃| 大吊一区二区三区| 免费男女羞羞的视频网站中文字幕妖精视频| 毛片免费不卡| 久久96国产精品久久99软件| 日本成人a视频| 日本一道高清一区二区三区| 欧美日韩一区二区免费在线观看| av在线不卡免费观看| 国产在线播精品第三| 日本aa大片在线播放免费看| 青青视频在线免费观看| 中文在线网在线中文| 国产熟人av一二三区| 致1999电视剧免费观看策驰影院| 可骚可骚的黄视频网站| 欧美影院在线| 国产不卡一区视频| 亚洲av无码国产精品永久一区| 影音先锋中文字幕影院| 久久三级中文| 韩国av一区二区三区在线观看| 五月天婷婷丁香网| 啪一啪鲁一鲁2019在线视频| 亚洲小视频在线观看| 国产网红女主播精品视频| 亚洲欧美日韩精品一区| 激情亚洲另类图片区小说区| 欧美色综合天天久久综合精品| 中文国语毛片高清视频| 午夜影院欧美| 国产日产欧美一区二区视频| 久久先锋影音av| 午夜免费福利在线观看| 波多野结衣久草一区| 日本亚洲欧美美色| 男女h黄动漫啪啪无遮挡软件| 国产真实乱偷精品视频免| 国产乡下妇女做爰视频| 99久久久无码国产精品免费| 国产一区二区导航在线播放| 91av福利| 亚洲精品免费一区二区三区| 91麻豆精品国产综合久久久久久| 免费看a级黄色片| 中文字幕人妻一区二区三区视频| 欧美午夜影院| 成人禁在线观看网站| 久久电影视频| 日本免费在线视频不卡一不卡二| 在线观看中文字幕亚洲| 伊人免费在线| 激情不卡一区二区三区视频在线| 麻豆9191精品国产| 91嫩草国产丨精品入口麻豆| 国产123在线| 五月婷婷欧美视频| 欧美日韩不卡中文字幕在线| 91国产免费看| 国产精品美女无圣光视频| 九九九热视频| 成人欧美一区二区三区视频| 免费在线观看一区二区三区|