你可以尝试用文本编辑器打开从WordPress主题制作全过程(三):HTML静态模板制作下载到的 .html 文件,不知道你有没有发现他们头部的代码都非常的相似呢?其实我们可以提取这部分相似的代码,放到一个单独的文件header.php中,各个页面想用这部分代码的时候再用php的include()或者WordPress的get_header()包含进去,省的每个页面里面都要写这部分代码,更改起来也可以达到一改全改的目的。

再次提醒:如果你不打算动手编写代码,这个系列教程就别看了,对你无益!

接着我们上次创建的主题目录wp-content\themes\Aurelius,在该目录下新建一个php文件header.php,我们提取出index.php中的头部代码复制粘贴到header.php中,下面的代码就是目前header.php中的所有代码了(当然不同主题的头部代码都是不一样,在你实际的项目中可以自定决定):

<!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>

再用文本编辑器打开index.phparchive.phpcontact.phpfull_width.phppage.phpsingle.php,删掉以上类似代码,改成:

<?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>改成:

<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文档:条件标签

到目前为止,可能你对这些条件判断标签还没有深入的认识,也搞不懂到底是用了这些标签会对主题造成怎样的影响的,随着我们教程的进一步深入,你会慢慢理解的。如果你不喜欢上面title的写法,可以自行上网搜索相关代码:WordPress SEO title

2、更改样式表style.css路径

在此之前你看到的首页都是混乱的,原因是还没加载css样式。现在我们一起把样式加上。你可以在header.php中找到这一段代码:

<link rel="stylesheet" href="./style.css" type="text/css" media="screen" />

聪明的你可能问:wp-content\themes\Aurelius目录下不是已经有一个 style.css 吗?那为什么 header.php 没有加载css呢?结果你是可以看到的,页面一篇混乱,可以确定确实没有加载到css。因为这是WordPress的主题,是要被WordPress的主程序调用,经过层层解析才能把你的博客显示出来,而不是简简单单的html静态网页文件。正确的改法:

<link rel="stylesheet" href="<?php bloginfo('stylesheet_url'); ?>" type="text/css" media="screen" />

bloginfo('stylesheet_url')输出的是你的主题css文件绝对网址,如http://localhost/wp/wp-content/themes/Aurelius/style.css,WordPress程序会自动识别你的WordPress安装地址,当前启用的主题,自动输出这个style.css链接。现在你可以试着更改一下,然后刷新一下你的博客首页,查看网页源代码,style.css的链接是不是变成你的了?页面是否可以正常显示了呢?

如果你的css文件不是style.css,且不是在主题根目录下,那怎么办呢?我们可以用<?php bloginfo('template_url'); ?>来获取主题根目录的URL,如你的主题css文件是abc.css,那么我们可以这样写:<?php bloginfo('template_url'); ?>/abc.css,如果是在子目录css下那就这样:<?php bloginfo('template_url'); ?>/css/abc.css。同样加载js文件也是这样。

不过,还有几张图片的路径不对,还不能显示出来,现在我们一起用文本编辑器打开index.phparchive.phpcontact.phpfull_width.phppage.phpsingle.php,给这些图片加上正确的URL,搜索代码,将所有的:src="data:images/,批量替换成src="<?php bloginfo('template_url'); ?>/images/。现在再刷新你的主页,看文章的缩略图是否可以正常显示。<?php bloginfo('template_url'); ?>用于输出主题目录的URL。

3、添加pingback

至于什么是pingback,你可以在搜索引擎中输入关键字:WordPress pingback,就可以得到你想要的答案了。如果你需要这个功能,可以在<head>里面添加以下代码:

<link rel="pingback" href="<?php bloginfo('pingback_url'); ?>" />

4、更改博客名称和描述

header.php,下面两行代码用于显示博客名称和描述:

<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>

上面是静态代码,现在做如下修改:

<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代码的作用。

  • <?php echo get_option('home'); ?>  输出你的博客首页网址
  • <?php bloginfo('name'); ?>  输出你的博客名称
  • <?php bloginfo('description'); ?>  输出博客描述

博客名称和描述可以在WordPress管理后台 - 设置 - 常规那里更改。以后制作你自己的WordPress主题的时候,你可参照上面的说明对你的主题进行修改。

5、添加订阅feed链接

相信每个已发布的WordPress博客主题都会提供feed订阅,当然我们的主题也应该提供这样的功能。在</head>之前添加以下代码:

<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>前面添加以下代码即可:

<?php wp_head(); ?>

现在打开你的博客主页,查看源代码,</head>前面是不是多了以下类似代码(这些都是wp_head()的功劳):

<link rel="EditURI" type="application/rsd+xml" title="RSD" href="http://ludou.co.tv/blog/xmlrpc.php?rsd" />
<link rel="wlwmanifest" type="application/wlwmanifest+xml" href="http://ludou.co.tv/blog/wp-includes/wlwmanifest.xml" />
<link rel='index' title='露兜实验室' href='http://ludou.co.tv' />
<meta name="generator" content="WordPress 2.9.2" />

7、添加Description 和 Keywords

关于添加网页描述和关键字,可以查看我之前写过的文章:WordPress使用经验(一)独立的Description 和 Keywords

8、显示菜单栏

目前菜单栏有Home、Blog和Contact Us几个菜单,不过这些都是静态的内容,并不是你博客上的页面。现在我们将菜单栏换成你的菜单,这里只在菜单栏中列出页面page,当然你也可以再放置分类,根据你的喜好来吧,将header.php中:

<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>

改成:

<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>

具体如何在菜单栏显示分类,你可以看这篇文章,有什么问题再给我留言:WordPress 分类做导航栏,并高亮显示

另外,可以参考这两个函数的说明(英文):

  • Template Tags/wp list pages
  • Template Tags/wp list categories

下面两篇文章介绍了WordPress菜单的制作方法,也可以参考:

  • WordPress主题导航菜单制作的几种方法(一)
  • WordPress主题导航菜单制作的几种方法(二)

9、刷新缓存

<body>前面,</head>后面添加PHP代码,用于提高程序运行效率:<?php flush(); ?>

总结

好了,本次练习到此结束!现在总结一些今天讲到的比较重要的知识点:

  • <?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),看看你改得怎么样?

-- 完 --

本文采用 「CC BY-NC-SA 4.0」创作共享协议,转载请标注以下信息:
原文出处:露兜博客 https://www.ludou.org/create-wordpress-themes-header.html

WordPress主题制作全过程(五):制作header.php相关推荐

  1. WordPress 主题教程:从零开始制作 WordPress 主题

    从零开始制作 WordPress 主题其实不难,只要你从现在开始认真阅读这个教程,一步一步认真学习,你就会成为一个 WordPress 主题制作高手.至少你会修改现有主题. 网络上已经有很多关于制作 ...

  2. wordpress主题后台管理菜单制作教程

    一款好的wordpress主题,必须有功能全面的后台管理菜单,这样方便用户设置自己的主题功能,WP只是集成了很少的功能,要想修改Logo,幻灯片,版权,博客样式等等,就要在后台管理菜单中集成功能,那么 ...

  3. 四、wordpress主题美化 网站logo制作

    1.查找一个合适的字体 参考网站:字体天下 2.下载字体生成工具 fontmin 3.生成logo 打开软件 fontmin ,拖入下载的字体,生成logo 4.引入字体 编辑主题下的文件 heade ...

  4. 从零开始制作 WordPress 主题

    从零开始制作 WordPress 主题其实不难,只要你从现在开始认真阅读这个教程,一步一步认真学习,你就会成为一个 WordPress 主题制作高手.至少你会修改现有主题.  网络上已经有很多关于制作 ...

  5. 【跨境电商】5个最佳免费极简主义WordPress主题(一)

    极简主义在近几年是非常流行的名词,从绘画.建筑到生活方式,无一没有它的存在. 说明现代人越来越喜欢这种简单的美,越来越享受简单的生活. 那么将极简主义风格应用于网页设计,使你的网站更清晰简单,会不会也 ...

  6. 大牛们是如何开发 WordPress 主题的?

    自己算是写过一个主题,目前也在用( 这里 -> http://udonmai.com/ ),所以多少想说两句. 当初走上web开发的路之后最想干的事情就是写个自己的WP主题...所以网上搜罗了很 ...

  7. 1 wordpress主题开发-起步

    主题由什么组成? 在最基本的层次上,WordPress主题是不同文件的集合,这些文件一起创建您所看到的内容以及网站的行为. 必需文件 WordPress主题中必需包含两个文件: index.php – ...

  8. WordPress主题制作全过程

    WordPress主题制作全过程完整列表: WordPress主题制作全过程(一):基础准备 WordPress主题制作全过程(二):主题文件构成 WordPress主题制作全过程(三):HTML静态 ...

  9. WordPress主题制作全过程(九):制作single.php

    今天我们来制作单文章页single.php,有了之前制作index.php的经验,制作single.php也不再那么难了,这里将直接略过一些内容,直接给出结果.如果对某些修改不太清楚,可以先参考:Wo ...

最新文章

  1. Linux SSH无交互式访问配置
  2. Java黑皮书课后题第10章:**10.23(实现String类)在Java库中提供了String类,给出你自己对下面方法的实现(将新类命名为MyString2)
  3. mysql c 更新 数据_Mysql:如果数据存在则更新,不存在则插入
  4. [LeetCode] Palindrome Linked List
  5. 获取Spring容器管理的Bean工具类
  6. 西瓜书《机器学习》决策树IDW3, C4.5公式推导
  7. CAD制图系列之中心线画法
  8. git-bisect last updated in 2.19.1【转】
  9. Bug管理的流程和几个重点
  10. 计算机知识竞赛的策划案,计算机趣味知识竞赛活动策划书
  11. Easyrecovery12.0.0.2 官方版下载
  12. 维刻柠檬鲜果冰怎么样?
  13. ObsidianFolderSync 创作格外丝滑
  14. 考研题目 第五章 数组和广义表
  15. 天正的计算机快捷命令大全,天正建筑快捷键命令大全 2
  16. 几个有意思的逻辑数学题
  17. Pathon 编写程序在屏幕中心绘制正方形
  18. html中多个空格怎么打?
  19. abp更改为mysql_ABPZero系列教程之拼多多卖家工具 更改数据库为MySQL数据库
  20. 张艾迪(创始人): 励志的路上

热门文章

  1. 【号外】阿里健康2016年财报显示 年度亏损1.9亿元
  2. three.js 实现管道流动特效
  3. Hive初始化问题 Failed to get schema version.
  4. 都江堰php,都江堰
  5. 百年理论预言被证实!《Nature》:我国科学家捕捉到水结冰的关键一瞬
  6. nmap工具的基本使用
  7. 〖Python接口自动化测试实战篇⑤〗- 接口自动化测试必备基础 - http协议
  8. 西邮c语言期末试卷百度云,GitHub - dcfun/XiyouLibNodeExpress: 西邮图书馆Web API-Node.js...
  9. 溃疡性结肠炎中肠黏膜病毒的变化
  10. bss段和data段的区别