关于 #WordPress# 的 keywords 和 description SEO 技巧网络上介绍很多,但是总是有这样那样的不足。网站的 keywords 及网页 description 关系网站对搜索引擎的友好程度,如果自己手动加显然太折腾了,那如何让 wordpress 博客自动为每篇文章、页面、分类、标签、搜索结果等等都可以自动加上 keywords 及网页 description 呢?。我想这更是大家希望得到的答案。现给大家两个方案:一、修改header.php;二、在functions.php增加代码;
先给大家看看本人博客的效果:
这是首页的keywords 和 description显示
这是分类的keywords 和 description显示
这是TAG标签的keywords 和 description显示
这是搜索结果页面的keywords 和 description显示 可以说已覆盖所有页面。可以说是一个比较齐全的优化实现。
具体方法如下。 一、方法一,在header.php合适位置添加以下代码。
<?php
//如果是首页
if (is_home()){
$description = \"HST网络站--关注互联网、IT科技、智能手机、电子商务、网络营销等内容的个人博客!\";
$keywords = \"Android,WordPress,黑莓,安卓,互联网,创业,销售,摄影,时尚,艺术,程序,生活\";
}
//如果是文章页
elseif (is_single()){
//默认使用文章页添加关键字
$keywords = get_post_meta($post->ID, \"keywords\", true);
//如果为空,使用标签作为关键字
if($keywords == \"\"){
$tags = wp_get_post_tags($post->ID);
foreach ($tags as $tag){
$keywords = $keywords.$tag->name.\",\";
}
//去掉最后一个,
$keywords = rtrim($keywords, \', \');
}
//默认使用文章页添加描述
$description = get_post_meta($post->ID, \"description\", true);
//如果为空,使用文章前200个字作为描述
if($description == \"\"){
if($post->post_excerpt){
$description = $post->post_excerpt;
}else{
$description = mb_strimwidth(strip_tags(apply_filters(\'the_content\',$post->post_content)),0,200);
}
}
}
//如果是页面,使用页面添加的关键字和描述
elseif (is_page()){
$keywords = get_post_meta($post->ID, \"keywords\", true);
$description = get_post_meta($post->ID, \"description\", true);
}
//如果是分类页,使用分类名作为关键字,分类描述作为描述
elseif (is_category()){
$keywords = single_cat_title(\'\', false);
$description = $blog_name . \"有关 \'\" . single_cat_title ( \'\', false ) . \"\' 的文章\";
}
//如果是标签页,使用标签名作为关键字,标签描述作为描述
elseif (is_tag()){
$keywords = single_tag_title(\'\', false);
$description = $blog_name . \"有关 \'\" . single_tag_title ( \'\', false ) . \"\' 的文章\";
}
//如果是搜索页,使用搜索词为关键字,搜索词描述做为描述
else if ( is_search() ) {
$keywords = esc_html ( $s, 1 );
$description = $blog_name . \"\'\" . esc_html ( $s, 1 ) . \"\' 的搜索結果\";
}
//去掉两段空格
$keywords = trim(strip_tags($keywords));
$description = trim(strip_tags($description));
?>
\" />
\" />
二、方法二,在你主题的functions.php文件添加以下代码,各个代码的功能解析如下,此方法不需要修改任何header.php的代码:
add_action ( \'wp_head\', \'wp_keywords\' ); // 添加关键字
add_action ( \'wp_head\', \'wp_description\' ); // 添加页面描述
/**
+----------------------------------------------------------
* 站点关键字(hst.liuyuxuan.com)
+----------------------------------------------------------
* @huangjinbo
+----------------------------------------------------------
*/
function wp_keywords() {
global $s, $post;
$keywords = \'\';
if (is_single ()) { //如果是文章页,关键词则是:标签+分类ID
if (get_the_tags ( $post->ID )) {
foreach ( get_the_tags ( $post->ID ) as $tag )
$keywords .= $tag->name . \', \';
}
foreach ( get_the_category ( $post->ID ) as $category )
$keywords .= $category->cat_name . \', \';
$keywords = substr_replace ( $keywords, \'\', - 2 );
} elseif (is_home ()) {
$keywords = \'我是主页关键词\'; //主页关键词设置
} elseif (is_tag ()) { //标签页关键词设置
$keywords = single_tag_title ( \'\', false );
} elseif (is_category ()) {//分类页关键词设置
$keywords = single_cat_title ( \'\', false );
} elseif (is_search ()) {//搜索页关键词设置
$keywords = esc_html ( $s, 1 );
} else {//默认页关键词设置
$keywords = trim ( wp_title ( \'\', false ) );
}
if ($keywords) { //输出关键词
echo \"<meta name=\"keywords\" content=\"$keywords\" />n\";
}
}
/**
+----------------------------------------------------------
* 站点描述
+----------------------------------------------------------
* @huangjinbo
+----------------------------------------------------------
*/
function wp_description() {
global $s, $post;
$description = \'\';
$blog_name = get_bloginfo ( \'name\' );
if (is_singular ()) { //文章页如果存在描述字段,则显示描述,否则截取文章内容
if (! empty ( $post->post_excerpt )) {
$text = $post->post_excerpt;
} else {
$text = $post->post_content;
}
$description = trim ( str_replace ( array (
\"rn\",
\"r\",
\"n\",
\" \",
\" \"
), \" \", str_replace ( \"\"\", \"\'\", strip_tags ( $text ) ) ) );
if (! ($description))
$description = $blog_name . \"-\" . trim ( wp_title ( \'\', false ) );
} elseif (is_home ()) {//首页显示描述设置
$description = $blog_name . \"-\" . get_bloginfo ( \'description\' ) .\'首页要显示的描述\'; // 首頁要自己加
} elseif (is_tag ()) {//标签页显示描述设置
$description = $blog_name . \"有关 \'\" . single_tag_title ( \'\', false ) . \"\' 的文章\";
} elseif (is_category ()) {//分类页显示描述设置
$description = $blog_name . \"有关 \'\" . single_cat_title ( \'\', false ) . \"\' 的文章\";
} elseif (is_archive ()) {//文档页显示描述设置
$description = $blog_name . \"在: \'\" . trim ( wp_title ( \'\', false ) ) . \"\' 的文章\";
} elseif (is_search ()) {//搜索页显示描述设置
$description = $blog_name . \": \'\" . esc_html ( $s, 1 ) . \"\' 的搜索結果\";
} else {//默认其他页显示描述设置
$description = $blog_name . \"有关 \'\" . trim ( wp_title ( \'\', false ) ) . \"\' 的文章\";
}
//输出描述
$description = mb_substr ( $description, 0, 220, \'utf-8\' ) . \'..\';
echo \"<meta name=\"description\" content=\"$description\" />n\";
}
简单吧,不需要再为keywords 和 description 设置而烦恼了。但最好的SEO还是写优质的文章,这个是永恒不变的正道。
原来之前本人曾写过一篇这样的文章,只不过没有这篇这么详细而已。大家可以参考一下。
http://hst.liuyuxuan.com/1658.html
再强大的SEO技巧也比不过原创的优质内容和勤更新。
确实如此,所以在本文最终也说了一句:最好的SEO还是写优质的文章,这个是永恒不变的正道。
在别的博客看到你的留言,刚想起坛子兄时右下角就弹出一个邮件提醒:你留言了。呵呵。
你每次都要人工审核吗?为什么不搞个“初次审核,以后就不用了”呢?这样你也省心,用户体验也好啊。
什么插件可以实现?我一直就想弄一个这样的功能了。
系统自带的呀:设置》讨论》》在评论显示之前》在评论显示之前》勾选:
“ 评论者先前须有评论通过了审核”
谢谢。这个还真的没有注意,现设置了,把“须经由管理员审核”钩去掉。
原先把“评论者先前须有评论通过了审核”和”须经由管理员审核”一起钩了。
现在应该可以了。
你的内容写得认真,我不时还是从我的链接表里点击过来的嘛。
你这玩了这么时间,这么一个设置都不知道,我还以为你是故意这样的呢。
须经由管理员审核 不选也可以的吧。
如果不选 经由管理员审核,那你现在留言我没有收到邮件提醒了。必须是你回我原先的留言我才会有提醒。
我的方法是,用akismet过滤垃圾邮件,评论者必须要填写邮箱和昵称,这样在用户体验和博客主人工审核之间做到一个平衡,垃圾评论太多了,你不可能人工审核得过来,而用户,即使是第一次评论,我认为让人家要等待一段时间才能看到自己的评论内容,这种体验不是最好的。
akismet能过滤99%的垃圾评论,极少情况下会有正常的误差,需要人工看一下,但这个工作量显然并不大。
其实我更多的是想马上看到大家的留言,然后第一时间回复。刚才你的几条留言我均没有邮件提醒。不知我现在给你的留言你是否收到邮件提醒?
留言你不必第一时间知道的呀,那如果留言一多,你每天就只能看最新留言了。我的原则是,任何人回复我的留言时,我会收到邮件提醒,而如果只是留言的话,不会有邮件提醒,要后台查看。你实在要想推荐一款小软件:WP-NOTIFIER, 官方提到的软件,不会有问题,你安装一下吧。而任何人的留言得到回复时,TA都会收到邮件提醒——这就是我强制留言者必须要留邮箱的原因。
回头看看。因为新留言不及时回复觉得让大家久等,呵呵。不过你这个说法也是真确的,试用一段时间,而留言提醒用手机客户端接收。
但有个问题就是你刚才回复我的留言我也没有收到邮件提醒。可能是“Comment Reply Notification”问题,已改为:“任何人回复都发送 ”。帮忙试试回复本留言看看,谢谢。
留言不一定要第一时间回复,能回复就不错了。
这下你肯定能收到我的回复了。
现在已收到你的留言。很不错,保留现在这种方案,多谢了。
我一直以为你是故意全部人工审核的。。。
不是勾上【有人发表评论时】就能够在任何人发表评论时收到通知?
当初是因为垃圾文件太多,所以才这样设置的。后来因为留言不多就一直保持这种方式。
任何人发表评论都会收到通知我是用:“Comment Reply Notification”来实现的,非常功能的插件,勺子介绍的,呵呵。
这个不错,先收藏先,谢谢博主啊, 我以前的那个总觉得不太好
喜欢就好。我这个比较全面一些。
今天终于用上了这个,把自己以前的那去删去了,呵,感觉不错。谢谢博主
呵呵,有用就好。
佐兄,你装了些什么插件呢?我装了个测试学习,那个自动草稿啥的好像挺烦的
我安装的插件不多,具体如下:Add Post URL、Akismet、Baidu Sitemap Generator、Comment Reply Notification、DX-auto-save-images、DX-Watermark、Google XML Sitemaps、Slimbox、WP-DBManager、WP-EasyArchives、WP SyntaxHighlighter。
关于自动草稿问题,月光博客曾写过一篇文章,可以参考一下:http://www.williamlong.info/archives/2301.html
方法一貌似缺一一截
确实是缺少代码,已修正了,建议使用第二种方法。
你现在这个主题的代码复制出来全在一行上
已发现这个问题了,回头有空时看看什么回事。
代码复制出来全在一行上的问题解决了。
WordPress Tiga 主题代码无法自动换行的解决方法
http://hst.liuyuxuan.com/4408.html
佐兄,author作者页和文章中的多分页上的keywords和description是不是也应该处理一下?!求完善。
不求完美了,因为现在keywords和descriptio在SEO重要性不大了。我现在的主题已经放弃keywords和descriptio功能。
何时发送电子邮件:有人发表评论时 ,有评论等待审核时。两个勾了就OK啦?
评论审核“评论者先前须有评论通过了审核”,关键是启用 ajax 评论提交,然后就可以把wp根目录的哪个 comment 给删了!