3.2 Index.php
以WordPress默认模板的index.php为例。我们先来看看它的结构:首先,通过<?php get_header(); ?>获得头信息;然后是一个循环体(The Loop,不知这样叫对不对);最后通过<?php get_sidebar(); ?>和<?php get_footer(); ?>加载侧边栏和页脚。
熟悉The Loop的用法能够让你随心所欲的控制文章的输出,因此我们来着重了解一下The Loop:
WordPress使用一个循环体来控制正文内容的显示,文章将按循环体内代码所定义的格式输出到当前页面上。部分模板标签必须在循环体内使用,如每篇文章的标题(the_title()),时间(the_time())和分类(the_category()) 。
简单表示如下:
<?php if ( have_posts() ) : while ( have_posts() ) : the_post(); ?>
…找到相关内容则按格式输出正文…
<?php endwhile; else: ?>
…否则输出错误信息…
<?php endif; ?>
The Loop的用法非常灵活,比如你可以将其和分类标签结合起来以限定某个页面或某一部分只显示某个或几个分类的内容,这就是一个最简单的Asides。有兴 趣的自己不妨找找相关插件或模板来看看。我在这里仅举两个简单的例子。比如,如果你想要某一页面只显示分类x(x代表该分类的ID)的内容,你可以这样 写:
<?php if ( have_posts() ) : while ( have_posts() [...]
三、模板文件解析
首先提一下WordPress的模板标签(Template Tags)。WordPress提供的模板标签十分丰富,你几乎可以利用它们把主题做成任何你想要的样子。了解并掌握重要标签的形式和用法是进行 WordPress主题开发的重要环节。WordPress Codex给出了大部分Template Tags的说明,我就不做重复劳动了。
进入正题,我们以WordPress Default 1.6为例,尽可能详细的分析模板文件中所用到的相关代码及技巧。
3.1 Header.php
我们从头开始好了。打开Header.php,在这里我们可以看到不少常用的模板标签,其中<?php language_attributes(); ?>是WordPress 2.1新增加的标签,用于在头部输出“lang=’zh-CN’”这样的语言标记,站点语言可以在后台定义。
在这里,你可以看到<?php bloginfo() ?>是一个被使用多次的模板标签,用于显示一些站点的相关信息,比如标题、网页类型、字符集、样式表链接、Rss链接等等。其用法是:
<?php bloginfo(‘show’); ?>
Show是你想要显示的内容,可以是:name、description、url、charset、stylesheet_url等等,具体请见http://codex.wordpress.org/Template_Tags/bloginfo
另外,<title> </title>之间的代码用于输出网页的标题,先看WP默认模板的标题输出:
除了用<?php bloginfo(’name’); ?>输出Blog的名字之外,该模板还使用了”is_single()”函数来判断当前页面是否是单篇汇整页面,如果是,则输出<?php if ( is_single() ) { ?>…<?php } ?>之间的语句。
这是一个非常常用的技巧,它允许你使用一段代码控制不同页面的输出效果,简便且灵活。除了is_single()之外,常用的还 有:is_home()、is_page()、is_paged()、is_archive()、is_search()、is_404()、 is_tag()。意思都很好理解,is_paged()就是某个存档的除第一页外的后n页(这个解释很别扭,俗称“上一页”…)。
如果非再要举个例子,那就来一个豪华的,K2的theloop.php。有别于普通WP模板按网页结构和存档性质划分模板文件的方法,K2使用 theloop.php来定义全部页面的正文内容输出,主要手段就是通过上面提到的那些函数来判断当前页面的性质以输出相应的内容。尽管原理很简单,但这 种处理模板文件的形式大大简化了代码编辑工作,因为你只需要通过一个模板文件中的几行代码就可以改变几乎任何一个页面上的内容。
如果你想要某页面不显示某些内容,只要在is前加上感叹号表示否定即可,例如:
<?php if ( !is_home() ) { ?>…<?php } ?>
最后,在</head>之前,一定会有一个<?php wp_head(); ?>,wp_head()用于获取一些插件或者主题所需的功能,这些功能通常是在后台就定义好的,比如在一些主题和插件里你可以看到 [...]
我决定静下心来,好好的写一些东西,最好能把我这一年多来设计WordPress主题的体验记录下来,和大家分享。
这会是几篇半教程性质的手记,估计内容会很杂,也很难写成体系,所以我打算写到哪算哪。有兴趣的随便看看吧,兴许能找到一两个有用的点子。
今天先扯开发WordPress主题可能用到的工具和资源,并简单介绍一下WordPress主题的结构……我废话又多了,开始吧。
一、开发工具及相关资源 本地WordPress架设:Xampp(WordPress官方也推荐了这一软件组合,方便实用)。 代码:Dreamweaver(我选择它仅仅是出于习惯,你完全可以选择一个更称手的)。 图像:Photoshop、Illustrator、Fireworks之类之类。 版本控制:Google Code,在教育网利用svn往google code上传东西实在是太慢了,不过还是推荐。 浏览器测试:Firefox(当然,少不了Web Developer Toolbar)、Internet Explorer 7、Mutiple IEs(包含可独立运行的IE3——IE6)、Opera、Swift(基于WebKit引擎的浏览器,用于Safari兼容性测试)。 相关站点: WordPress Codex WordPress Hooks WordPress Theme Viewer 二、WordPress主题结构——模板文件及其调用
传统的网页通常使用HTML来控制页面结构,并通过样式表(CSS)来控制页面的表现。WordPress也使用样式表来控制网页的表现,但其页面 内容则是由几个模板文件(Template Files)共同构建而成的。其中一些模板文件是全局性的,比如头信息和页脚模块,而有一些则只用于特殊场合。
这些模板文件通常由XHTML和简单的PHP代码构成,只要你有一些基本的网页知识,并且知道什么是“if…else…”,就不用太担心代码问题 ——当然,掌握一些基本的XHTML、CSS、PHP和Javascript知识,还是大有好处的。在文章中,我会尽量少涉及模板之外的代码,很多东西, 不是拿来谈论的,比如网页标准,我们遵循它,使用它,就可以了。
我们习惯性的将网页分解为 “头信息(Header)”、“内容(Content)”、“侧边栏(Sidebar)”、“页脚(Footer)”这几个主要部分,而这也是主要 WordPress模板文件划分的依据。通常一个普通的WordPress主题会包含一下几个模板文件:
样式表:style.css 头信息模块:header.php 内容模块:index.php、page.php、single.php、archive.php、search.php、404.php 侧边栏模块:sidebar.php 页脚模块:footer.php 评论模块:comments.php 搜索表单模块:searchform.php
其中,style.css用于定义主题的外观;头信息模块定义了网站的基本信息,比如标题、关键词等等;站点的主要内容使用index.php输 出,page.php用于输出分页内容,而single.php则被用于单篇汇整,404模块用于返回站点404错误信息;sidebar.php包含了 网站的一些次要内容,比如订阅、分类、链接等等;页脚信息通常会包含站点的版权等相关信息;而其他模块所含内容视情况而定,比如comments.php [...]
都说wordpress的title标签原本不利于搜索引擎优化,title标签原本是按照 博客名>文章名 显示出来的。对搜索引擎并不友好,懒的找wordpress中文插件的朋友、或者觉得插件影响速度的可以用以下代码直接实现 wordpress的title标签的优化,实现对搜索引擎的友好。
进入你的wordpress后台管理-外观-主题编辑器-页眉 也就是编辑header.php文件
<?php wp_title(”); ?> <?php if ( is_single() or is_page() or is_category() ) { ?> – <?php } ?> <?php bloginfo(’name’); ?>
将上面的代码覆盖<title>。。。</title> 就可以
其中用到的wordpress函数解释
<?php wp_title(”); ?> 这个是输出你当前文章的标题
<?php if ( is_single() or is_page() or is_category() ) { ?> – <?php } ?> 这个是说:如果是 单篇文章、页面文章、或者标签页 输出一个 [...]
作为博客写手、网页设计师和元老级网民,我们每天要浏览许多的网站和博客。除阅读之外,我们也会对其它所有相关都会感到好奇。这些好奇往往产生 自网站(博客)的数字和数据,例如页面点击量、Feed订阅数、排名、网站虚拟主机和网站的价值等等。暴风彬彬建议你看看这篇《通过27个网站分析工具了解网站的9个有趣真相》。暴风彬彬在此之前也曾经推荐过《20个免费的SEO网站分析工具》,如果感兴趣,也可以去看一看。
1.流量 | 访问量,页面点击量,排名
2.页面读取(载入)时间
[...]
<?php
wp_list_cats(“sort_column=name&optioncount=1&feed=RSS“);
?>
这句就是告诉它分类要依照名称排序、并显示拥有的文章数量、而且分类要显示分类RSS连结。
各个自设选项列表如下
sort_column
ID 或 name,预设为 ‘ID
分别为依 ID 值或分类名称排序
sort_order
asc [...]
为了总结 SEO WordPress 的方法,前些天做了很多准备工作,收集相关文章和工具。而这篇文章主要参照了“SEO for WordPress”和“WordPress and SEO”这 2 篇文章,另外还参考了“Google 搜索引擎优化技术的12个要点”,我要做的就是把他们的方法用自己的语言归纳了一下,然后加入一点自己的看法。
SEO WordPress 首先就要选一个好主题 (注意:在 WP 主题中普遍存在的 6 个 SEO 问题),当然现在市面上的 WordPress 主题都是按照 Web 标准来设计制作的,对搜索引擎已经够友好了,而 WordPress 本身就很适合 SEO,下面就来说说优化过程。
1、设置一个友好链接
这里介绍了很多种 Permalinks 结构,对个人博客 Jim 推荐最好的结构是 /%postname%/ ,而我认为 /%year%/%monthnum%/%postname%.html 这种结构更加合理。
2、让 WordPress 的 URL 地址唯一化
在使用了 Permalinks [...]
链接中的关键字在Google搜索结果排名的种种因素中还是占有不小的分量的,以致于你当你使用中文的链接的时候,Google这个搜索引擎会考虑 把你的网站放到结果中靠前的位置,大家不妨可以开始使用留下中文的链接。因为你不需要让用户记住你的链接,在目前搜索引擎时代,你的链接就算是再容易记 忆,用户最终也许还是通过搜索引擎第二次来到你的网站,所以网站针对搜速引擎优化是很重要的,也许只是排名稍微上升几名,你的网站就会产生质的变化。
中文链接在浏览器里面会转化成一串的符号和数字。当然你也可以直接在地址栏输入中文,浏览器会自动转化。例如:
http://wzba.info/google-识别中文链接吗google-seo-优化/会转换为http://wzba.info/google-%E8%AF%86%E5%88%AB%E4%B8%AD%E6%96%87%E9%93%BE%E6%8E%A5%E5%90%97google-seo-%E4%BC%98%E5%8C%96/
当然中文链接也包含拼音链接,这些都是Google引擎可以识别的,百度就不用说了一定识别得更好,比如百度空间的Hi.baidu.com就支持 中文的空间,当你给你的链接起了个名字的时候,你说搜索引擎是不是更好的判断你链接里面的内容呢?所以有意义的链接名让搜索引擎更能够认识你页面的内容。
看看Google 支持中文链接的证据
注意:上面的结果都不是一个关键字的搜索出来结果,但是搜索的关键字都在Google的结果当中进行了了突出显示,上面的结果都排在第一页到第二页之间,还是挺有代表意义的。
如果您的BLOG使用WordPress搭建,强烈推荐您观看这个系列视频教程。
讲解了经典的7种Hacks手段及插件。视频教程制作精致,讲解详细,甚至一些插图和动画还很幽默。
How to Get More Search Engine Traffic With One Simple Tweak
怎样通过一个很简单的手段从搜索引擎获取更多的流量,主要讲解了怎样修改默认的固定链接的样式,得到更直观和方便搜索引擎查询的标题。不过对中文标题并不合适。
How to Make More Money With AdSense
怎样从AdSense赚更多的钱,主要讲解了AdSense-Deluxe Plugin for WordPress插件的安装和使用方法。
Feedvertising: Make Money With Your RSS Feed
怎样从你的RSS Feed赚钱,主要讲解了在RSS Feed里加入text-link-ads广告获得收入的方法。目前这种方式也不适合中文内容的BLOG。
More Feedback, Less Spam: WordPress Contact Form Plugin
更少的垃圾信息,主要讲解了WordPress Contact Form Plugin!插件的安装和使用方法。建立一个留言页面得到更多的反馈并与读者建立直接的联系。
How to Increase Comments and Page Views With One Quick and Easy Plugin
怎样通过一个快捷简便的插件获取更多的评论和页面浏览量(PV),主要讲解了Subscribe to Comments plugin插件的安装和使用方法,可以允许用户通过E-Mail的方式订阅最新的评论信息。
How to Stop Comment Spam without Lifting a Finger
怎样自动的阻止垃圾评论,主要讲解了Akismet插件的安装和使用方法。
页面的静态化,对于访问量较大的站点来说,可以极大的减少数据库的连接/读取次数,减少CPU的消耗率,从而增强站点的负载能力,并且一定程度上提高用户 的访问速度,即使数据库崩溃,站点依然可以正常访问,而且搜索引擎对于静态HTML页面,也会有很多的照顾……。目前可以看到的WordPress的静态 化插件,一般都有比较致命的缺陷,比如关联文章的显示,留言时候的更新,SideBar部分数据的更新……等等, 那是否有什么方法,是可以让自己来定义如何,或者是什么时候生成静态化HTML页面的呢?
月光的通用PHP动态生成静态HTML网页的代码给我们做了简单的说明,说明了如何自己实现静态化HTML的输出:
首先设置.htaccess文件(关于.htaccess的URL重定向,可以参考.htaccess使用方法总结),将动态调用的参数转换为静态的HTML的URL地址,例如将在post目录下的文件,转发到根目录的wp-post.php文件中,加入的语句类似:
RewriteRule ^post/([a-z0-9\-]+\.html)$ wp-post.php?$1$2
然后修改wp-post.php文件,在文件的开头加入以下PHP代码:
ob_start(); $qstring = isset($_SERVER["QUERY_STRING"]) ? $_SERVER["QUERY_STRING"] : “”; define(“HTML_FILE“, $_SERVER['DOCUMENT_ROOT'].“/post/“.$qstring); if (file_exists(HTML_FILE)) { $lcft = filemtime(HTML_FILE); if (($lcft + 3600) > time()) //判断上次生成HTML文件是否超过1小时,若没有才直接输出文件内容 { echo(file_get_contents(HTML_FILE)); exit(0); } }
之后是现有的PHP的代码,然后在当前代码的最后面加上如下的PHP代码:
define(“HTMLMETA“,“<!– this is a real static html file created at “.date(“Y-m-d H:i:s“).“ –>“); [...]
-
Calendar
May 2012 M T W T F S S « Feb 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 26 27 28 29 30 31 -
Meta

