从《WordPress主题制作课程#4:制作HTML网页模板》中下载的静态html模板文件,会发现所有html文件的代码中头部部分几乎是一样的,因此在制作wordpress主题中,可以把这部分相同的代码提取出来,单独保存到 header.php 文件,然后在各个模板文件中使用php的 include 包含进去,不但可以不用在每个文件中都添加这部分代码,更改时也仅需要修改 header.php 文件即可。
接着上一篇教程中创建的主题目录 wp-content\themes\Aurelius ,在该目录下新建一个 php文件 header.php,把提取出index.php中相同的头部代码复制粘贴到header.php文件,下面的代码就是目前header.php中的所有代码了(不同主题的头部代码是不一样,在实际项目中请自行决定):
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 | <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head profile="http://gmpg.org/xfn/11"> <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> <title>Aurelius | Blog</title> <!-- Stylesheets --> <link rel="stylesheet" href="./style.css" type="text/css" media="screen" /> </head> <body> <div id="wrapper" class="container_12 clearfix"> <!-- Text Logo --> <h1 id="logo" class="grid_4">Aurelius</h1> <!-- Navigation Menu --> <ul id="navigation" class="grid_8"> <li><a href="contact.html"><span class="meta">Get in touch</span><br /> Contact Us</a></li> <li><a href="blog.html" class="current"><span class="meta">Latest news</span><br /> Blog</a></li> <li><a href="index.html"><span class="meta">Homepage</span><br /> Home</a></li> </ul> <div class="hr grid_12 clearfix"> </div> <!-- Caption Line --> <h2 class="grid_12 caption clearfix">Our <span>blog</span>, keeping you up-to-date on our latest news.</h2> <div class="hr grid_12 clearfix"> </div> |
再用文本编辑器notepad++打开index.php、archive.php、contact.php、full_width.php、page.php和single.php,删掉以上类似代码,改成:
1 | <?php get_header(); ?> |
然后打开测试博客主页,看看制作的主题是否可以正常工作,答案是可以的,跟原来几乎没什么两样,但页面还是一片混乱。
get_header()函数就相当于将header.php中的代码拷贝到当前的php文件。接下来,会仔细探讨header.php中的动态内容。header.php将会被所有的模板页面(主页、分类页、页面、标签页等)所包含,因此header.php中代码应该是动态,适合不同页面的,所以这里面需要用到PHP代码,而不是单纯的HTML。
下面让我们一起来修改header.php:
1、更改<title>
我们都知道不同页面的title都是不一样,而且title的设置还会直接影响到SEO的效果,所以这里应该谨慎设置。下面提供一种SEO优化的title写法,将<title>Aurelius | Blog</title>改成:
1 2 3 4 5 6 7 8 9 10 11 12 13 | <title><?php if ( is_home() ) { bloginfo('name'); echo " - "; bloginfo('description'); } elseif ( is_category() ) { single_cat_title(); echo " - "; bloginfo('name'); } elseif (is_single() || is_page() ) { single_post_title(); } elseif (is_search() ) { echo "搜索结果"; echo " - "; bloginfo('name'); } elseif (is_404() ) { echo '页面未找到!'; } else { wp_title('',true); } ?></title> |
以上添加的php代码运用了条件判断,针对不同的页面采用不同title,这里解释一下这几个条件标签。
- is_home() :当前页面为主页时返回true
- is_category():当前页面为分类页时返回true
- is_single():当前页面为单文章页时返回true
- is_page():当前页面为单页面时返回true
- 更详细的内容参阅WordPress文档:条件标签
到目前为止,可能你对这些条件判断标签还没有深入的认识,也搞不懂到底是用了这些标签会对主题造成怎样的影响的,随着我们教程的进一步深入,你会慢慢理解的。
2、更改样式表style.css路径
在此之前你看到的首页都是混乱的,原因是还没加载css样式。现在把样式加上。在header.php文件中找到这一段代码:
1 | <link rel="stylesheet" href="./style.css" type="text/css" media="screen" /> |
也许你会有疑问:wp-content\themes\Aurelius目录下不是已经有一个 style.css 样式文件了吗?为什么 header.php 没有加载css?结果你是可以看到的,页面一篇混乱,可以确定确实没有加载到css。因为这是WordPress的主题,是要被WordPress的主程序调用,经过层层解析才能把你的博客显示出来,而不是简简单单的html静态网页文件。正确的改法:
1 | <link rel="stylesheet" href="<?php bloginfo('stylesheet_url'); ?>" type="text/css" media="screen" /> |
bloginfo(‘stylesheet_url’)输出的是你的主题css文件绝对网址,如https://www.boke8.net/wp-content/themes/Aurelius/style.css,WordPress程序会自动识别你的WordPress安装地址,当前启用的主题,自动输出这个style.css链接。现在你可以试着更改一下,然后刷新一下你的博客首页,查看网页源代码,style.css的链接是不是变成你的了?页面是否可以正常显示了呢?
如果你的css文件不是style.css,且不是在主题根目录下,那怎么办呢?可以用:
1 | <?php bloginfo('template_url');?> |
来获取主题根目录的URL,如你的主题css文件是abc.css,那么可以这样写:
1 | <?php bloginfo('template_url');?> |
如果是在子目录css下那就这样:
1 | <?php bloginfo('template_url');?> |
同样加载js文件也是这样。
此外还有几张图片的路径不对,还不能显示出来,现在用文本编辑器打开index.php、archive.php、contact.php、full_width.php、page.php和single.php,给这些图片加上正确的URL,搜索代码,将所有的:
1 | src="images/ |
批量替换成
1 | src="<?php bloginfo('template_url'); ?>/images/ |
现在再刷新你的主页,看文章的缩略图610×150是否可以正常显示。
1 | <?php bloginfo('template_url'); ?><!--用于输出主题目录的URL。--> |
3、添加pingback
至于什么是pingback,你可以在搜索引擎中输入关键字WordPress pingback,就可以得到你想要的答案了。如果你需要这个功能,可以将在<head>里面添加代码:
1 | <link rel="pingback" href="<?php bloginfo('pingback_url'); ?>" /> |
4、更改博客名称和描述
在header.php,下面两行代码用于显示博客名称和描述:
1 2 | <h1 id="logo" class="grid_4">Aurelius</h1> <h2 class="grid_12 caption clearfix">Our <span>blog</span>, keeping you up-to-date on our latest news.</h2> |
上面是静态代码,现在做如下修改:
1 2 | <h1 id="logo" class="grid_4"><a href="<?php echo get_option('home'); ?>/"><?php bloginfo('name'); ?></a></h1> <h2 class="grid_12 caption clearfix"><?php bloginfo('description'); ?></h2> |
现在你的博客首页看到的就是你博客名称和描述了,并且logo也是一个链接指向你的博客首页。我们这里说说这些php代码的作用。
1 2 3 | <?php echo get_option('home'); ?> <!--输出你的博客首页网址--> <?php bloginfo('name'); ?> <!--输出你的博客名称--> <?php bloginfo('description'); ?> <!--输出博客描述--> |
博客名称和描述可以在WordPress管理后台 – 设置 – 常规那里更改。以后制作你自己的WordPress主题的时候,你可参照上面的说明对你的主题进行修改。
5、添加订阅feed链接
相信每个已发布的WordPress博客主题都会提供feed订阅,当然我们的主题也应该提供这样的功能。在</head>之前添加以下代码:
1 2 | <link rel="alternate" type="application/rss+xml" title="RSS 2.0 - 所有文章" href="<?php echo get_bloginfo('rss2_url'); ?>" /> <link rel="alternate" type="application/rss+xml" title="RSS 2.0 - 所有评论" href="<?php bloginfo('comments_rss2_url'); ?>" /> |
6、添加wp_head
有些插件需要在网页头部执行一些类如添加一些js或css的动作,要让这些插件能够正常的工作,也让你的主题有更好的兼容性,你应该添加wp_head()函数。打开header.php,在</head>前面添加以下代码即可:
1 | <?php wp_head(); ?> |
现在打开你的博客主页,查看源代码,</head>前面是不是多了以下类似代码(这些都是wp_head()的功劳):
1 2 3 4 | <link rel="EditURI" type="application/rsd+xml" title="RSD" href="https://www.boke8.net/xmlrpc.php?rsd" /> <link rel="wlwmanifest" type="application/wlwmanifest+xml" href="https://www.boke8.net/wp-includes/wlwmanifest.xml" /> <link rel='index' title='露兜实验室' href='http://ludou.co.tv' /> <meta name="generator" content="WordPress 2.9.2" /> |
7、添加Description 和 Keywords
关于添加网页描述和关键字,在header.php文件<head?>和</head?>之间添加代码:
1 2 3 4 | <?php if(is_home()){?> <meta name="keywords" content="博客吧"/> <meta name="description" content="关注织梦dedecms与wordpress教程及主题模板!"/> <?php } ?> |
以上关键词和描述只对网站首页生效,因为加入了条件判断代码,if(is_home())。
8、显示菜单栏
目前菜单栏有Home、Blog和Contact Us几个菜单,不过这些都是静态的内容,并不是你博客上的页面。现在将菜单栏换成你的菜单,这里只在菜单栏中列出页面page,当然你也可以再放置分类,根据你个人喜好设置,将header.php中:
1 2 3 4 5 6 7 8 | <ul id="navigation" class="grid_8"> <li><a href="contact.html"><span class="meta">Get in touch</span><br /> Contact Us</a></li> <li><a href="blog.html" class="current"><span class="meta">Latest news</span><br /> Blog</a></li> <li><a href="index.html"><span class="meta">Homepage</span><br /> Home</a></li> </ul> |
改成:
1 2 3 4 | <ul id="navigation" class="grid_8"> <?php wp_list_pages('depth=1&title_li=0&sort_column=menu_order'); ?> <li <?php if (is_home()) { echo 'class="current"';} ?>><a title="<?php bloginfo('name'); ?>" href="<?php echo get_option('home'); ?>/">主页</a></li> </ul> |
9、刷新缓存
在<body>前面,</head>后面添加PHP代码,用于提高程序运行效率:
1 | <?php flush();?> |
总结
好了,本次练习到此结束!现在总结一些今天讲到的比较重要的知识点:(看代码中的注释内容)
1 2 3 4 5 6 7 8 9 10 11 | <?php get_header(); ?> <!--从当前主题文件夹中包含header.php文件--> <!--is_home(),is_single(),is_category()等几个条件判断标签--> <?php bloginfo('stylesheet_url'); ?> <!--输出主题文件夹中style.css文件的路径--> <?php bloginfo('pingback_url'); ?> <!--输出博客pingback网址--> <?php bloginfo('template_url'); ?> <!--输出博客主题目录URL--> <?php echo get_option('home'); ?> <!--输出你的博客首页网址--> <?php bloginfo('name'); ?> <!--输出你的博客名称--> <?php bloginfo('description'); ?> <!--输出博客描述--> <?php wp_head(); ?> <!--用于包含WordPress程序输出头部信息--> <?php wp_list_categories(); ?> <!--用于列出博客分类页--> <?php wp_list_pages(); ?> <!--用于列出博客页面--> |
到目前为止你的博客还只能看到主页,不要灰心,凡事一步一个脚印,以后教程会慢慢深入的。最后提供经过本次修改后的Aurelius主题文件,你可以用文本编辑器打开看看,跟你修改的文件比较比较(尤其是header.php),看看你改得怎么样?
本次完整文件下载:aurelius_header.zip
教程转自露兜博客