标签: wordpress

WordPress主题制作函数全攻略

一套完整的WordPress模板应至少具有如下文件:

  • style.css: CSS(样式表)文件
  • index.php: 主页模板
  • archive.php: Archive/Category模板
  • 404.php: Not Found 错误页模板
  • comments.php: 留言/回复模板
  • footer.php: Footer模板
  • header.php: Header模板
  • sidebar.php: 侧栏模板
  • page.php: 内容页(Page)模板
  • single.php: 内容页(Post)模板
  • search.php : 搜索结果模板

当然,具体到特定的某款模板,可能不止这些文件,但一般而言,这些文件是每套模板所必备的。

基本条件判断Tag

  • is_home(): 是否为主页
  • is_single(): 是否为内容页(Post)
  • is_page(): 是否为内容页(Page)
  • is_category(): 是否为Category/Archive页
  • is_tag(): 是否为Tag存档页
  • is_date(): 是否为指定日期存档页
  • is_year(): 是否为指定年份存档页
  • is_month(): 是否为指定月份存档页
  • is_day(): 是否为指定日存档页
  • is_time(): 是否为指定时间存档页
  • is_archive(): 是否为存档页
  • is_search(): 是否为搜索结果页
  • is_404(): 是否为 “HTTP 404: Not Found” 错误页
  • is_paged() : 主页/Category/Archive页是否以多页显示

Header部分常用到的PHP函数

  • <?php bloginfo(’name’); ?>: 博客名称(Title)
  • <?php bloginfo(’stylesheet_url’); ?>: CSS文件路径
  • <?php bloginfo(’pingback_url’); ?>: PingBack Url
  • <?php bloginfo(’template_url’); ?>: 模板文件路径
  • <?php bloginfo(’version’); ?>: WordPress版本
  • <?php bloginfo(’atom_url’); ?>: Atom Url
  • <?php bloginfo(’rss2_url’); ?>: RSS 2.o Url
  • <?php bloginfo(’url’); ?>: 博客 Url
  • <?php bloginfo(’html_type’); ?>: 博客网页Html类型
  • <?php bloginfo(’charset’); ?>: 博客网页编码
  • <?php bloginfo(’description’); ?>: 博客描述
  • <?php wp_title(); ?> : 特定内容页(Post/Page)的标题

模板常用的PHP函数及命令

  • <?php get_header(); ?>: 调用Header模板
  • <?php get_sidebar(); ?>: 调用Sidebar模板
  • <?php get_footer(); ?>: 调用Footer模板
  • <?php the_content(); ?>: 显示内容(Post/Page)
  • <?php if(have_posts()) : ?>: 检查是否存在Post/Page
  • <?php while(have_posts()) : the_post(); ?>: 如果存在Post/Page则予以显示
  • <?php endwhile; ?>: While 结束
  • <?php endif; ?>: If 结束
  • <?php the_time(’字符串’) ?> : 显示时间,时间格式由“字符串”参数决定,具体参考PHP手册
  • <?php comments_popup_link(); ?>: 正文中的留言链接。如果使用 comments_popup_script() ,则留言会在新窗口中打开,反之,则在当前窗口打开
  • <?php the_title(); ?>: 内容页(Post/Page)标题
  • <?php the_permalink() ?>: 内容页(Post/Page) Url
  • <?php the_category(’, ‘) ?>: 特定内容页(Post/Page)所属Category
  • <?php the_author(); ?>: 作者
  • <?php the_ID(); ?>: 特定内容页(Post/Page) ID
  • <?php edit_post_link(); ?>: 如果用户已登录并具有权限,显示编辑链接
  • <?php get_links_list(); ?>: 显示Blogroll中的链接
  • <?php comments_template(); ?>: 调用留言/回复模板
  • <?php wp_list_pages(); ?>: 显示Page列表
  • <?php wp_list_categories(); ?>: 显示Categories列表
  • <?php next_post_link(’ %link ‘); ?>: 下一篇文章链接
  • <?php previous_post_link(’%link’); ?>: 上一篇文章链接
  • <?php get_calendar(); ?>: 日历
  • <?php wp_get_archives() ?>: 显示内容存档
  • <?php posts_nav_link(); ?>: 导航,显示上一篇/下一篇文章链接
  • <?php include(TEMPLATEPATH . ‘/文件名’); ?> : 嵌入其他文件,可为定制的模板或其他类型文件

与模板相关的其他函数

  • <?php _e(’Message’); ?>: 输出相应信息
  • <?php wp_register(); ?>: 显示注册链接
  • <?php wp_loginout(); ?>: 显示登录/注销链接
  • <!–next page–>: 将当前内容分页
  • <!–more–>: 将当前内容截断,以不在主页/目录页显示全部内容
  • <?php timer_stop(1); ?>: 网页加载时间(秒)
  • <?php echo get_num_queries(); ?> : 网页加载查询量

WordPress 首页摘要而RSS全文输出解决方案

说实话,我对于页面的整齐以及博客排版要求很高,常常要为了一篇文章的排版而多过写文章的时间,而且 现在Bloging还有个麻烦,就是Flickr被封我就不能用Flickr图片,但是我却很喜欢…非常喜欢Flickr的服务,以至于现在每次Blog都是博客中出现图片为我站点服务器图片,而连接地址引到Flickr上去。

最近 搬到WordPress平台,渐渐开始适应了,不过发现,因为我很喜欢引用图片来Blog,如果我文章图片较多的时候,会把博客首页页面拉得太长,影响打开速度和页面效果,所以我开始考虑在首页文章显示摘要,通常以2张图片为限:也就是博客内容除了文字以外,只显示2张截图,全文显示放置在文章页面里。要解决这个方案,我找到了编辑器中“More”的功能:

 

WordPress Test

但是WordPress有个问题,一旦使用More,在RSS中 将会输出文章摘要而不是全文内容了。我曾经也承诺过,除了我操作失误,否则Blog内不会出现摘要输出 以及 付费评论这2大博客的毒瘤。为了这个,询问了朋友和查阅Google,最后找到解决办法 一劳永逸的方法,具体办法如下:

1. 首先在文章中 使用More的代码,插入到你需要的位置;
2. 然后,修改WordPress 里面wp-includes文件夹中的post-template.php文件,使用任何代码编辑器打开,在里面找到以下If 代码:

 

if( preg_match(’/<!–more(.*?)?–>/’, $content, $matches) ){
$content = explode($matches[0], $content, 2);
if ( !empty($matches[1]) && !empty($more_link_text) )
$more_link_text = strip_tags(wp_kses_no_null(trim($matches[1])));
}

我们需要修改的就第一句话:

if ( preg_match(’/<!–more(.*?)?–>/’, $content, $matches ) ){

修改为(粗体字部分):

if ( preg_match(’/<!–more(.*?)?–>/’, $content, $matches)   && !is_feed() ){

如此一来,WordPress的More功能就不会影响到我们RSS的输出了。

(原文链接:http://blog.jooit.com/?p=731)

robot.txt写法

其实robots.txt就是一个记事本文件(txt格式文件),存放在网站根目录下。

那么robots.txt语法到底有哪些呢?

robots.txt语法有三个语法和两个通配符。

三个语法:

1.首先要定义网站被访问的搜索引擎是那些。

User-agent:(定义搜索引擎)
语法:User-agent: * 或 搜索引擎的蜘蛛名称

例子:User-agent:Googlebot (定义谷歌,只允许谷歌蜘蛛爬取)
User-agent:Baiduspider (定义百度,只允许百度蜘蛛爬取)
User-agent:*(定义所有搜索引擎)

2:屏蔽搜索引擎爬去语法

Disallow:(禁止语法) 用来定义禁止蜘蛛爬取的页面或目录。

写法:DisAllow:/文件夹目录/ (表示禁止蜘蛛爬取网站的其中一个目录)
或 DisAllow:/文件名称 (表示禁止蜘蛛爬取网站的其中一个页面)

例如:Disallow:/ (禁止蜘蛛爬取网站的所有目录 “/” 表示根目录下)
Disallow:/admin (禁止蜘蛛爬取admin目录)
Disallow:/abc.html (禁止蜘蛛爬去abc.html页面)
Disallow:/help.html (禁止蜘蛛爬去help.html页面)

整套语法示范:
User-agent: *
Disallow:/目录1/ (禁止所有搜索引擎的蜘蛛爬取站点的目录1)
Disallow:/目录2/ (禁止所有搜索引擎的蜘蛛爬取站点的目录2)

3:允许搜索引擎爬去语法

Allow:(允许语法) 用来定义允许蜘蛛爬取的页面或子目录

例如: Disallow:/ (禁止蜘蛛爬取网站的所有目录)
Disallow:/admin (禁止蜘蛛爬取admin目录)
Allow:/admin/abc.html(“/” 表示根目录下,允许蜘蛛爬去admin目录中的abc.html页面)

两个通配符:

匹配符”$”和 “*”
$ 通配符:匹配URL结尾的字符; * 通配符:匹配0个或多个任意字符;

例子1:
允许所有搜索引擎蜘蛛抓取以某个扩展名为后缀的网页地址,代码如下:
User-agent: *
Allow: .htm$ 说明(其中“.htm”,表示充许搜索引擎蜘蛛抓取所有”.htm”为后缀的文件,注意,这里并不包括以”.html”为后缀的文件)

例2:
设定某种类型文件禁止被某个搜索引擎蜘蛛抓取,代码如下:
User-agent: *
Disallow: /*.htm 说明(其中“.htm”,表示禁止搜索引擎蜘蛛抓取所有以”.htm”为后缀的文件,注意,这里并不包括以”.html”为后缀的文件)

为wordpress创建有利于seo的robots.txt文件

如果您不想让 Google 或其他搜索引擎访问您网站中的某些内容,请用 robots.txt 文件指定搜索引擎抓取您的网站内容的方式。这是google管理员工具对robots.txt功能的一个描述。
robots.txt文件说白了就是告诉爬虫哪些网址是可以被收录那些是禁止收录的。对于大多数wordpress博主来说很少注意robots.txt,认为他无关紧要,其实不然,robots.txt在wordpress优化,网站seo方面有着很重要的作用。robots.txt不光可以保护网站隐私链接不被搜索到,而且可以控制网站内容的重复和抓取错误。下面我就写几种wordpress常用的robots.txt规则。

 

最简单的robots.txt规则:

User-agent: *
Disallow:

这是开放式的写法,Disallow:留空,是让搜索引擎收录所有链接。

安全性的robots.txt书写规则:

User-agent: *
Disallow: /cgi-bin/
Disallow: /wp-
Allow: /wp-content/uploads/
Disallow: /*.php$
Disallow: /*.inc$
Disallow: /*.js$
Disallow: /*.css$
Disallow: /*.cgi$
Disallow: /?s=

有利于seo的robots.txt书写规则:(以本站为例)

User-agent: *
Disallow: /cgi-bin/
Disallow: /wp-
Disallow: */rss.xml
Disallow: /author/
Disallow: /page/
Disallow: /tag/
Disallow: */trackback/
Disallow: */feed/
Disallow: /*.php$
Disallow: /*.inc$
Disallow: /*.js$
Disallow: /*.css$
Disallow: /*.cgi$
Disallow: /*?*
Disallow: /?s=
Sitemap: http://www.example.com/sitemap.xml

先说所我为什么这么设置。google管理员工具在分析我网站抓取错误信息的时候,发现大量链接是http://www.example.com/xxxx/rss.xml的形式,为了减少抓取错误,我就让搜索不爬这些链接,Disallow: */rss.xml  ,如果你没遇到和我一样的问题这一条你可以不用加。同样,如果你的网站有大量抓取错误的无效链接,你可以在这里指定不抓取。

再有就是网站元重复太严重(标题重复,描述重复,关键词重复),这严重影响搜索引擎排名,我看中的是文章页排名,所以像标签页,作者文章归档,月份存档页,分页这些我选择Disallow。因为我的文章页面在google中的权重很高,流量几乎都是文章页面的,所以才这么设置。这个根据自己网站实际情况选择性的设置。

feed和trackback的条款是一定要的,可以说wordpress 80%以上的补充材料都是和它们有关。

 

wordpress官方robots.txt书写规则(国外)

User-agent: *
Disallow: /cgi-bin
Disallow: /wp-admin
Disallow: /wp-includes
Disallow: /wp-content/plugins
Disallow: /wp-content/cache
Disallow: /wp-content/themes
Disallow: /trackback
Disallow: /feed
Disallow: /comments
Disallow: /author/*
Disallow: */trackback
Disallow: */feed
Disallow: */comments
Disallow: /*?*
Disallow: /*?
Allow: /wp-content/uploads

# Google Image
User-agent: Googlebot-Image
Disallow:
Allow: /*

# Google AdSense
User-agent: Mediapartners-Google*
Disallow:
Allow: /*

# digg mirror
User-agent: duggmirror
Disallow: /

Sitemap: http://www.example.com/sitemap.xml

对于自己网站情况还不太清楚的博主,我推荐用这种,没有风险,安全,有利于seo。具体内容请参考:wordpress codex

在你修改robots.txt文件时,可以用Google网站管理员工具检测一下robots.txt是否符合规范。

robots.txt必须放置在一个站点的根目录下,而且文件名必须全部小写。

WordPress的Robots.txt设置

为了避免搜索引擎对博客内容进行重复索引,可以用robots.txt限制搜索引擎机器人对某些页面的抓取。例如分类页面(category)、标签页面(tag)之类的是随最新文章变化的,对它们做索引就没有什么意义。

可以在web的根目录下放置一个如下内容的robot.txt文件(文件名全部为小写):

User-agent: *
Disallow: /wp-admin
Disallow: /tag
Disallow: /category/
Disallow: /*?*

User-agent: Mediapartners-Google
Allow: /

其中的“Disallow:/*?*”那句是让搜索引擎不去索引所有带“?”的网址。如果WordPress没有采用永久固定链接而用默认的“ /?p=xx”的方式的话就要删掉这句。

请注意末尾的两句,其含义是允许Google Adsense的机器人去抓取所有页面,这样才可以在所有页面上都放adsense广告。否则在禁止了索引的页面上只会显示公益广告而无法获得 adsense收入。曾经有人对该问题的回复是设置:

User-agent: Mediapartners-Google*
Allow: /

也就是后面加了个“*”,不知道是那人笔误还是怎样,这个“*”是不对的,但网络上以讹传讹,很多文章在说明robots.txt的设置时都说成 是:“User-agent: Mediapartners-Google*”。我们可以利用google的网站管理员工具中的“测试robots.txt”来进行测试,就会发现如果末 尾加了“*”的话结果是不正确的。上面的文字来自:蓝天博客

下面我们介绍什么是robot.txt文件及其语法:

robots.txt是搜索引擎中访问网站的时候要查看的第一个文件。Robots.txt文件告诉蜘蛛程序在服务器上什么文件是可以被查看的。
当一个搜索蜘蛛访问一个站点时,它会首先检查该站点根目录下是否存在robots.txt,如果存在,搜索机器人就会按照该文件中的内容来确定访问的范围;如果该文件不存在,所有的搜索蜘蛛将能够访问网站上所有没有被口令保护的页面。
robots.txt必须放置在一个站点的根目录下,而且文件名必须全部小写。
语法:最简单的 robots.txt 文件使用两条规则:
• User-Agent: 适用下列规则的漫游器
• Disallow: 要拦截的网页

robots.txt文件的格式

”robots.txt”文件包含一条或更多的记录,这些记录通过空行分开(以 CR,CR/NL, or NL作为结束符),每一条记录的格式如下所示:
“:

“。

在该文件中可以使用#进行注解,具体使用方法和UNIX中的惯例一样。该文件中的记录通常以一行或多行User-agent开始,后面加上若干Disallow和Allow行,详细情况如下:
User-agent:
该项的值用于描述搜索引擎robot的名字。在”robots.txt”文件中,如果有多条 User-agent记录说明有多个robot会受到”robots.txt”的限制,对该文件来说,至少要有一条User-agent记录。如果该项的值设为*,则对任何robot均有效,在”robots.txt”文件中,”User-agent:*”这样的记录只能有一条。如果在”robots.txt”文件中,加入”User-agent:SomeBot”和若干Disallow、Allow行,那么名为”SomeBot”只受到”User-agent:SomeBot”后面的Disallow和Allow行的限制。
Disallow:
该项的值用于描述不希望被访问的一组URL,这个值可以是一条完整的路径,也可以是路径的非空前缀,以Disallow项的值开头的URL不会被robot访问。例如”Disallow:/help”禁止robot访问/help.html、 /helpabc.html、/help/index.html,而”Disallow:/help/”则允许robot访问/help.html、 /helpabc.html,不能访问/help/index.html。”Disallow:”说明允许robot访问该网站的所有url,在” /robots.txt”文件中,至少要有一条Disallow记录。如果”/robots.txt”不存在或者为空文件,则对于所有的搜索引擎 robot,该网站都是开放的。
Allow:
该项的值用于描述希望被访问的一组URL,与Disallow项相似,这个值可以是一条完整的路径,也可以是路径的前缀,以Allow项的值开头的URL是允许robot访问的。例如”Allow:/hibaidu”允许robot访问 /hibaidu.htm、/hibaiducom.html、/hibaidu/com.html。一个网站的所有URL默认是Allow的,所以 Allow通常与Disallow搭配使用,实现允许访问一部分网页同时禁止访问其它所有URL的功能。
需要特别注意的是Disallow与Allow行的顺序是有意义的,robot会根据第一个匹配成功的Allow或Disallow行确定是否访问某个URL。
使用”*”和”$”:
Baiduspider支持使用通配符”*”和”$”来模糊匹配url。
”$” 匹配行结束符。
”*” 匹配0或多个任意字符。

(本文转自乔大海的个人网站)

 

WordPress 3.5 更新啦!

WordPress 3.5 更新啦。让我们看看WordPress 3.5 都有哪些新的变化。最明显的莫过于默认主题和媒体功能的变化。更加大气简洁。更多细节请看视频或自己慢慢探究吧。对了现在在后台已经可以直接下载更新了。当然如果你是新用户可以去cn.wordpress.org下载的。

WordPress SEO 技巧

随着搜索引擎大兴, 排列在前的网站引入大量流量. 无论是搜索页面的广告还是查出来的结果, 与搜索者的目标匹配度都比较高 (如果搜索引擎足够智能), 所以通过搜索引擎而来的访客很可能会从网站上得到他想要的东西, 并记住这个网站. 也就是说, 搜索引擎会带来很多有价值的流量, 所以花点时间针对搜索引擎优化一下 WordPress 博客也是值得的. 本文将为你分享一些 WordPress SEO 技巧.

以前我没有花太多时间做搜索引擎优化, 搜索引擎收录效果不是很好. 去年二月我终于为博客搞了一下 SEO, 写下这个文章. 一年半以来陆续进行了更多 SEO 优化, 博客文章写得不多了, 流量却有增无减, 网站也重回 PageRank 7, 效果相当不错的. 这次我根据自己的 WordPress SEO 方案更新了本文的内容.

继续阅读

为 WordPress 的 Read more 加上 nofollow

前段时间写过一篇关于 WordPress SEO 技巧的带建议性质的文章, 貌似大家很喜欢. 但那看似一个列表, 部分内容并没有给出具体的解决办法, 所以有很多同学提问了. 其中一个问题被问得最多:

怎样为 Read more (“阅读全文” 链接) 加上 rel=”nofollow” 属性?

我不写出实现方法是有原因的.

1. 实现方法简单

2. 实现方法很多

3. 我的实现方法比较粗暴

不管如何, 既然这么多人感兴趣, 我就提出来说说吧.

以下我列举三种实现方法.

1. 打开 {WordPress 根目录}/wp-includes/post-template.php 文件, 然后在 get_the_content 方法里为 Read more 链接加上 rel=”nofollow”.

2. 在主题目录的 function.php 文件里重写 the_content 或者 get_the_content 方法.

3. 用 PHP 截取 the_content 输出的文本, 加上 nofollow 属性后再输出文本.

其中方法 2 和方法 3 可做成插件实现.

方法 1 简单方便, 而且效率最高, 所以我直接改了 WordPress 的源代码. 至于你选择哪种, 那只能由你自己判断了.

建议不明白真相的观众阅读我的上一篇文章, 在本站搜索栏搜索 “WordPress SEO” 既可找到.

实现代码

感谢 yinheli 提供代码, 可以将以下代码加到 function.php 中实现在 read more 链接上添加 nofollow.

 

 

function add_nofollow_to_link($link) {
 return str_replace('<a', '<a rel="nofollow"', $link);
}
add_filter('the_content_more_link','add_nofollow_to_link', 0);


转自:NEOEASE 原文链接:http://www.neoease.com/add-nofollow-to-read-more-link-on-wordpress/

给你的WordPress博客添加返回顶部按钮

当Wordpress网页显示的内容增多时,如果继续使用鼠标滚动来返回顶部导航的话将会是件很麻烦的事情。很多时候我们需要滚好几下才能到达顶部。于是像QQ空间、Discuz论坛等都出现了返回顶部的按钮。这些按钮的实现方式也不尽相同。直接使用html实现是件很简单的事情。但是效果不够优美(点击完会马上跳到顶部)。所以博主找了一种用js实现的比较好的方法。

Step1 

下载js文件并上传至主题目录下。点击下载

Step2

编辑主题中的foot.php文件。在底部添加:

<script src=”<?php bloginfo(‘stylesheet_directory’); ?>/gototop.js” type=”text/javascript” charset=”utf-8″></script>
<div id=”scroll”><a href=”javascript:void(0)” onclick=”goto_top()” title=”返回顶部”>TOP</a></div>

注:可将<?php bloginfo(‘stylesheet_directory’); ?>/gototop.js 改为gototop.js的绝对地址。

Step3

打开主题样式表,复制下列代码插入。保存。

/*返回顶部*/
#scroll {display:block; width:30px; margin-right:-520px;
position:fixed;
right:50%;
top:90%;
_margin-right:-507px;
_position:absolute;
_margin-top:30px;
_top:expression(eval(document.documentElement.scrollTop));
}
#scroll a {
display:block;
float:right;
padding:9px 5px;
cursor: pointer;
background-color:#444;
color:#fff;
border-radius:5px;
text-decoration: none;
font-weight:bold;
}
#scroll a:hover {
background-color:#333;
color:#669900;
text-decoration: none;
font-weight:bold;
}

搞定!!!参考样式:http://www.wildhorde.com

提示:适当修改CSS样式即可拥有你喜欢的返回顶部按钮。圆角不支持IE9以下的IE浏览器。

WordPress评论连接重写

对于比较重视SEO的朋友来说自带的评论功能已经不能满足要求。评论多的话有可能分散权重。虽然自带的评论功能中在评论者的网站连接中加入了 rel=’external nofollow’ 【.nofollow和external nofollow标签说明:(1)、将”nofollow”写在网页上的meta标签上,用来告诉搜索引擎不要抓取网页上的所有外部链接。(2)、将”nofollow”放在超链接中,告诉搜索引擎不要抓取特定的链接。而rel=’external nofollow’只是更相对于rel=’nofollow’参数更加规范一些。】具体有没有效果不得而知。所以高手们又写出一种更好的解决方法——给连接进行重定向。

打开主题文件functions.php添加下面的代码后,同时实现评论作者链接地址重定向和在新窗口打开两个功能,这样就不会受wordpress版本更新的影响了。

 

//访客链接新窗口打开
function comment_author_link_window()
{
global $comment;
$url = get_comment_author_url();
$author = get_comment_author();
$home = get_option(‘home’);
if ( empty( $url ) || ‘http://’ == $url )
$return = $author;
else
$return = “<a href=’$home?link=$url’ rel=’external nofollow’ target=’_blank’>$author</a>”;
return $return;
}
add_filter(‘get_comment_author_link’, ‘comment_author_link_window’);
//开启评论链接地址重写
function redirect_comment_link()
{
$redirect = $_GET[‘url’];
if($redirect){
if(strpos($_SERVER[‘HTTP_REFERER’],get_option(‘home’)) !== false){
header(“Location: $redirect”);
exit;
} else {
header(“Location:”.get_option(‘home’));
exit;
}
}
}
add_action(‘init’, ‘redirect_comment_link’);


注意事项:添加这些代码之前,检查一下自己的主题中是否自带了评论链接新窗口打开的代码,如果有的话,需要先去掉原来的那个,不然的话可能会报错。

版权所有 © 2024 野人部落实验室

主题设计 Anders Noren返回顶部 ↑