宝哥软件园

切换WordPress主题边栏的PHP脚本详细说明

编辑:宝哥软件园 来源:互联网 时间:2021-09-20

作为一个主题制作人,除了实现功能、展示界面之外,也有责任让主题变得灵活,以满足更多人的不同需求。可能有些朋友一直困扰于选择两栏主题(单面侧边栏)还是三栏主题(双面侧边栏)。我们以Classic主题为例,谈谈如何在主题中方便地在单面侧边栏和双面侧边栏之间切换。最后,我将提供修改后的主题。

20151214161808473.png  (344174)

添加后台处理的管理选项。首先,我们需要修改function.php,而主要的处理工作就在这个文件中。如果主题没有此文件,请创建一个。(说明没有function.php主题不支持Widget不是一个好习惯,不如赶紧新建一个。)我的处理包括三个大型:采集选项。初始化,选项卡操作界面。这里只创建一个公告板,包括两个选项(是否显示公告板和公告板内容)。如果想增加更多的选项,只需要在代码中三个TODO的位置增加一些代码即可。当然,您还需要更改选项的名称,并替换所有经典和classic。

?Php/** *选项组类型*/class classifications {/*-get选项组- */function getOptions() {///get选项组$ options=get _ option(' classic _ options ')在数据库中;//如果数据库中不存在选项组,请设置这些选项的默认值,并在(!idspnonenote)中插入它们。is _ array($ options)){ $ options[' notice ']=false;$ options[' notice _ content ']=' ';//TODO:在此添加其他选项:update _ option ('classic _ options ',$ options);}//返回选项组return $ options}/*-初始化-*/function init(){//如果数据是POST提交的,则限制数据,并在(isset($ _ POST[' classic _ save '])){//获取选项组时将其更新到数据库。因为可能只修改一些选项,所以先把它们取下来,然后更改为$ options=经典选项。//数据限制if($ _ post[' notice ']){ $ options[' notice ']=(bool)true;} else { $ options[' note ']=(bool)false;} $ options[' notice _ content ']=strip slashes($ _ POST[' notice _ content ']);//TODO:在此添加其他选项的限制处理。//更新数据update _ option ('classic _ options ',$ options);//否则,再次获取选项组,即初始化data } else { classifications :3360 getoptions();}//在后台Design页面添加一个选项卡,名为当前主题选项add _ theme _ page('当前主题选项','当前主题选项',' edit _ themes ',base name(_ file _ _),array('经典选项',' display ');}/*-tab-*/function display(){ $ options=classifications :3360 getoptions();表单操作='# '方法=' post ' enctype=' multipart/form-data ' name=' classic _ form ' id=' classic _ form ' div class=' wrap ' H2?php _e('当前主题选项','经典');/h2!-公告栏-表格类='表单-表格' t body trvalign=' top ' th scope=' row '?php _e('Notice ',' classic ');br/small style=' font-weight : normal;'?php _e('启用HTML ','经典')?/small /th td!布告栏显示了吗?-标签输入名称='注意'类型='复选框'值='复选框'?PHP if($ options[' note '])echo ' checked=' checked ';/?php _e('显示通知',‘经典’);/label br/!-公告栏的内容-标签text area name=' notice _ content ' cols=' 50 ' row=' 10 ' id=' notice _ content ' style=' width :98 ';' font-size :12 px;'class='code '?PHP echo($ options[' notice _ content ']);/text area/label/TD/tr/t body/table!- TODO:在这里添加其他选项-!-submit按钮-p class=' submit '输入类型=' submit '名称=' classic _ save '值='?php _e('更新选项','经典');'//p /div /form?Php }} /** *注册初始化方法*/add _ action ('admin _ menu ',array('经典选项',' init ');前景处理

要在主页上显示公告栏,需要修改index.php。这个比较简单,只有通过一些判断语句,才能决定某样东西要不要展示。当然,你可以执行其他操作,关键是获取选项的值并处理它们。其实可以分为两步:

获取选项(对于每个PHP文件,只需获取一次,可以在文件顶部执行)并处理选项(如果这里判断为真,将显示公告内容)。

!-获取选项-?PHP $ options=get _ option(' classic _ options ');-如果用户选择显示公告栏,公告栏有内容,会显示-?PHP if($ options[' notice ']$ options[' notice _ content ']):div id=' notice ' div class=' content '?PHP echo($ options[' notice _ content ']);/div /div?php endif?您可以使用管理项来控制边栏的数量,获取主题文件中的边栏数量,并对不同的数量进行不同的处理,从而在不同数量的边栏之间进行切换。

//侧边栏的数量,默认为单侧侧边栏$options['侧边栏']=1;//获取最新提交值$ options ['侧边栏']=$ _ post ['侧边栏'];选择名称='侧边栏'大小='1 '!-单边侧边栏-选项值=' 1 '?php if($options['侧边栏']!=2)回声“选中”;php _e('Single ',' classic ');/option!-双边侧边栏-选项值=' 2 '?php if($options['侧边栏']==2)echo ' selected ';php _e('Double ',' classic ');/option/select?php _e('边栏','经典');添加小部件支持。

因为我们想要在单侧边栏和双侧边栏之间切换,所以我们需要为两种不同的模式定义Widget初始化的两个分支。这很特别。为了在代码中正确获取Widget信息,即使是单侧边栏也需要一个别名。就像代码中的Sidebar_single一样。当侧边栏数量为1时,注册侧边栏_single。当侧边栏数量为2时,注册侧边栏_top和侧边栏。

//Widgets $ options=get _ option(' classic _ options ');//单边侧边栏if(function _ exists(' register _ sidebar ')$ options[' sidebar ']==1){ register _ sidebar(array(' name '=' sidebar _ single ',' before _ widget '=' Li id=' % 1 $ s ' class=' widget % 2 $ s ',' after_widget'='/li ',' before _ title '=' H3 '));//双边侧边栏} else if(function _ exists(' register _ sidebar ')$ options[' sidebar ']==2){ register _ sidebar(array(' name '=' sidebar _ bottom ',' before _ widget '=' Li id=' % 1 $ s ' class=' widget % 2 $ s ',' after_widget'='/li ',' before_title'='h3 ',' after _ title '='/H3 ');register_sidebar(array('name'='侧边栏_top ',' before _ widget '=' Li id=' % 1 $ s ' class=' widget % 2 $ s ',' after_widget'='/li ',' before_title'='h3 ',' after _ title '='/H3 ');}修改侧栏结构。

首先,我们需要一个双面侧边栏结构。怎么才能把双面侧边栏改成单面侧边栏?只要删除上一个侧边栏的结束标签和下一个侧边栏的开始标签,这两个侧边栏就会合并成一个侧边栏。很难用简单的文字来表达我的想法和实现,所以你可以阅读下面的代码和示例图片。

ul class='侧栏_1 '?php if(!function _ exists(' dynamic _ sidebar ')| |!dynamic _ sidebar(' sidebar _ single ')://single?php if(!function _ exists(' dynamic _ sidebar ')| |!dynamic _ sidebar(' sidebar _ top ')://top?- TODO:顶级侧边栏内容-?php endif//top?php if ($options['侧边栏']=2) :/ulul class='侧栏_2 '?php endif?php if(!function _ exists(' dynamic _ sidebar ')| |!dynamic _ sidebar(' sidebar _ bottom ')://bottom?- TODO:底部侧栏内容-?php endif//底部?php endif//单身?/ulOK,这是侧边栏代码结构。它可以完美地在侧边栏的一侧和两侧之间切换。但是它是如何工作的呢?稍后我会用图片列出它的六种可能状态。因为主题已经支持Widget,所以在代码中,function _ exists(' dynamic _ sidebar ')==true,那么!function _ exists(' dynamic _ sidebar ')==false。还记得添加Widget支持时写的代码吗?当侧边栏为1时,侧边栏_single有效,当侧边栏为2时,侧边栏_top和侧边栏_bottom有效。这是整个想法的关键。

备注:

红色:表示所选代码为假,绿色:表示所选代码为真,蓝色:表示所选部分将被所选Widget替换,灰色:表示所选部分代码无效。

20151214162043469.png  (600223)

二、双边侧边栏,不带Widget。

20151214162105747.png  (600223)

状态3 :单边侧边栏,使用Widget。

20151214162131301.png  (600223)

状态4:双边栏。小部件用于顶部边栏。

20151214162152461.png  (600223)

状态5:双边栏。小部件用于底部侧边栏。

20151214162214329.png  (600223)

状态6:双边栏。顶部和底部边栏中都使用了小部件。

20151214162230870.png  (600223)

更多资讯
游戏推荐
更多+