十年网站开发经验 + 多家企业客户 + 靠谱的建站团队
量身定制 + 运营维护+专业推广+无忧售后,网站问题一站解决
首先,这个问题是我在知乎上提的,再次看到真是倍感亲切啊~
创新互联服务项目包括南通网站建设、南通网站制作、南通网页制作以及南通网络营销策划等。多年来,我们专注于互联网行业,利用自身积累的技术优势、行业经验、深度合作伙伴关系等,向广大中小型企业、政府机构等提供互联网行业的解决方案,南通网站推广取得了明显的社会效益与经济效益。目前,我们服务的客户以成都为中心已经辐射到南通省份的部分城市,未来相信会继续扩大服务区域并继续获得客户的支持与信任!
现在回看,跟以前还是有不同的见解的,其中,我认为有大神的回答非常好“精通php胜过精通一个cms”,也就是说,如果你的php足够好,那就不要纠结用wordpress还是用phpcms了。因为无论用哪一个,都可以解决问题,而且是很好的解决!
说说我为什么会这样提问,我本人属于php入门阶段,只会写非常简单的代码,但是能够比较熟练使用phpcmsv9,大概用了1年时间了,其实是非常喜欢这个产品的。但非常遗憾的是,v9基本上没有任何更新了,属于放养状态了,想找一个代替品,所以选择了wordpress。
也用过wordpress做过几个网站(准确来说是做过几个主题),但从开发的角度来看,显然wordpress的学习成本要高很多。具体表现在以下方面:
1结构比较西方化,基本靠
function.PHP
控制,大量的方法堆积到这个文件,眼花缭乱,有的还不写注释,找起来非常不方便
2方法有不下几万种,多是多了,但找起来也是非常麻烦,而且很多发放有一大批参数需要配置,当然了从一个侧面表示这个方法足够强大,但大部分时间用不上,由于汉化问题,查找起来费劲。
3钩子让我困扰。。。如果不是非常有经验的开发者,小白你就别想搞明白这个东西了,具体表现是我一直就没明白到底有多少hook,什么时候该挂hook,挂哪个hook。。
4菜单配置非常繁琐,菜单输入函数非常不方便,这个很抓狂,相比phpcms可以直接输出菜单数据,wordpress输出了除了数据以外的样式,而且非常固定,改起来要重写菜单函数,极其不方便。。。。这个也是被很多人吐槽过的
5插件繁多,但兼容性很差,我这问题也问题很多人,他们回答是那是因为你不懂,这个我真是没法反驳啊,无论多么麻烦的系统和工具,只要你懂了,那就不难。。这不废话吗?我想用过wordpress的人没有几个不被插件坑过,想彻底懂?那就一个一个坑填吧。
6耗内存,对主机配置要求高。。。这个现在还好一些,以前有google组件时候更要命。
说了这么多不好,但我还是选择用它了,没别的,就是因为它是一个既没有版权限制,又更新及时的CMS..这一点国内cms真是没法比。总之就是坑很深,但值得入~
另外,phpcms也很不错,但显然过时了。。。
二更一下,修改了一些错字。
这里阐述一下啊,写了这么多,并不是抨击wp多不好,我最后也说了,最终我还是选择了用wp,我想表达的观点就是,wp想学到精髓,是要比国内的phpcms这些难一些的,当初我用phpcmsv9时候,真心用了3天基本就可以应付一般网站了,但wp玩了半个月,还是不太懂。。。尤其是各种插件还有一些钩子函数,可能也是学习方法没有掌握吧~
但有的大神确实可以用wp做各种网站,真的是各种网站~佩服啊
1、创建所需的文件
在进行主题定制前,应该首先创建一个可供自定义的“设置选项页面”。创建设置选项页的代码需要放置在主题目录下的functions.php文件中。如果我们的模板名为“OptionPage”,那么functions文件的路径为:wp-contentthemesOptionPagefunctions.php。
我们不需要让wordpress手动加载它,在执行时wordpress会自动加载。
2、建立设置选项页
首先第一步需要在后台建立一个空白页面供我们使用。我们通过add_aaction来实现这一步。Actions可以在wordpress执行时的特定时间被响应,例如,当在控制面板创建菜单时,admin_menu就会被响应执行。因此,可以利用这些来实现我们所需的功能。这是我们创建选项页的最基本的功能。
?php
// 设置选项页
function themeoptions_admin_menu()
{
// 在控制面板的侧边栏添加设置选项页链接
add_theme_page(“主题设置”, “主题选项”, ‘edit_themes’, basename(__FILE__), ‘themeoptions_page’);
}
function themeoptions_page()
{
// 设置选项页面的主要功能
}
add_action(‘admin_menu’, ‘themeoptions_admin_menu’);
?
themeoptions_admin_menu()是在控制面板的侧边栏中添加一个链接,指向我们创建的选项页:themeoptions_page。
add_theme_page() 的参数为:
页面标题:主题设置
菜单标题:主题选项(p.s.为了区分显示,页面与菜单标题我做了不同我命名)
作用功能:edit_themes;
Handle(句柄):当前文件;
执行的函数:themeoptions_page;
现在后台控制面板侧边栏的处就多了一个“主题设置”的菜单,但是现在还是空白的,我们后面要实现的定制内容就在这个空白页面上创建。
3、添加选项和字段
现在我们就可以在刚创建的空白页面上添加我们的选项和字段。这个页面你可以根据自己的需要进行样式风格化,但在本教程中我们将使用wordpress默认的类,这样可以节省我们的时间并且看起来更加原生。
页面内容的代码需包含在 themeoptions_page()函数内。首先,我们先添加一个class=”wrap”的div容器;然后,在头部添加一个默认图标作为作为页面标题;最后是设计表单。
div class=“wrap”
div id=“icon-themes” class=“icon32″br //div
h2主题设置/h2
form method=“POST” action=“”
input type=“hidden” name=“update_themeoptions” value=“true” /
pinput type=“submit” name=“submit” id=“submit” class=“button button-primary” value=“保存更改”/p
/form
/div
在表单中,首先我们需要添加一个隐藏的值,通过它来检查更新是否已经提交。然后添加一个提交按钮,这里我也使用wordpress默认的按钮样式。现在的效果为:
现在我们已经创建了设置选项页的基本结构,下面我们开始根据之前制定的内容进行完善:
首先,我们要允许主题使用者可以更改颜色方案。对于这一点,我们需要一个下拉列表提供可用的配色方案。
其次,增加两个广告位的内容,我们需要增加两个文本框来输入图片的URL及广告链接URL。
最后,用户可选择是否显示搜索框。这一点,我们通过添加复选框来实现。
代码如下:
function themeoptions_page()
{
// 这是产生主题选项页面的主要功能
?
div
div id=“icon-themes”br //div
h2主题设置/h2
form method=“POST” action=“”
input type=“hidden” name=“update_themeoptions” value=“true” /
h4主题配色方案/h4
select name =“colour”
?php $colour = get_option(‘mytheme_colour’); ?
option value=“gray” ?php if ($colour==’gray’) { echo ‘selected’; } ? 灰色/option
option value=“blue” ?php if ($colour==’blue’) { echo ‘selected’; } ?浅蓝/option
option value=“pink” ?php if ($colour==’pink’) { echo ‘selected’; } ?粉红/option
/select
h4图片广告位(1)/h4
pinput type=“text” name=“ad1image” id=“ad1image” size=“32” value=“?php echo get_option(‘mytheme_ad1image’); ?”/ 广告图片/p
pinput type=“text” name=“ad1url” id=“ad1url” size=“32” value=“?php echo get_option(‘mytheme_ad1url’); ?”/ 广告链接/p
h4图片广告位(2)/h4
pinput type=“text” name=“ad2image” id=“ad2image” size=“32” value=“?php echo get_option(‘mytheme_ad2image’); ?”/ 广告图片/p
pinput type=“text” name=“ad2url” id=“ad2url” size=“32” value=“?php echo get_option(‘mytheme_ad2url’); ?”/ 广告链接/p
h4input type=“checkbox” name=“display_search” id=“display_search” ?php echo get_option(‘mytheme_display_search’); ? / 显示搜索框/h4pinput type=“submit” name=“bcn_admin_options” value=“更新数据”//p
/form
/div
?php
}
到这里选项页面的内容就已经基本构建完毕了。
4、数据库更新
到目前为止,我们已经创建了一个主题选项页面,下一步要做的就是如何将数据透过POST提交的wordpress数据库。要做到这一点,需要创建一个新的功能函数themeoptions_update(),这个函数将会被themeoptions_page()调用,所以将下面的代码添加到themeoptions_page()函数的最上面。
if ( $_POST[‘update_themeoptions’] == ’true’ ) { themeoptions_update(); }
下一步是增加一个更新函数。
function themeoptions_update()
{
// 数据更新验证
update_option(‘mytheme_colour’, $_POST[‘colour’]);
update_option(‘mytheme_ad1image’, $_POST[‘ad1image’]);
update_option(‘mytheme_ad1url’, $_POST[‘ad1url’]);
update_option(‘mytheme_ad2image’, $_POST[‘ad2image’]);
update_option(‘mytheme_ad2url’, $_POST[‘ad2url’]);
if ($_POST[‘display_search’]==’on’) { $display = ‘checked’; } else { $display = ”; }
update_option(‘mytheme_display_search’, $display);
}
5、调用选项定制主题
我们主题的默认样式文件为style.css,如果使用其他的配色方案,我们需要建立相应的样式文件,例如本例中的blue.css、pink.css,style.css为默认的灰色。
为了切换配色方案样式表,需要在主题header中加入以下代码:
link rel=“stylesheet” href=“?php bloginfo(‘stylesheet_directory’); ?/default.css” type=“text/css”
link rel=“stylesheet” href=“?php bloginfo(‘stylesheet_directory’); ?/?php echo get_option(‘mytheme_colour’); ?.css” type=“text/css”
增加广告位图片—在你想要放置广告的地方添加以下代码:
a href=“?php echo get_option(‘mytheme_ad1url’); ?”img src=“?php echo get_option(‘mytheme_ad1image’); ?” height=“125” width=“125” //a
a href=“?php echo get_option(‘mytheme_ad2url’); ?”img src=“?php echo get_option(‘mytheme_ad2image’); ?” height=“125” width=“125” //a
是否显示搜索框—在需要放置搜索框的地方添加以下代码,当用户选择显示搜索框时会显示,否则则不显示:
?php if ( get_option(‘mytheme_display_search’) == ‘checked’) { ?
h3搜索框/h3
form method=“get” id=“searchform” action=“?php echo esc_url( home_url( ‘/’ ) ); ?”
input type=“text” name=“s” id=“s” placeholder=“?php esc_attr_e( ‘Search’, ’85Ryan’ ); ?” /
input type=“submit” name=“submit” id=“searchsubmit” value=“搜索” /
/form
?php } ?
这可能是Wordpress主题的事儿,如果是前台的提示的话,你看一下所用主题的header.php文件,里面有没有一句:
!--[if IE
这里是输出函数或者直接就是HTML内容
![endif]--
一般情况下是有的,你将上面的IE改为lt IE 9即可,意思是如果访客使用的是低于IE9的IE浏览器的时候才出现此提示。
如果你没有找到,可以再问!