post_excerpt) { $description = $post->post_excerpt; } else { $description = substr(strip_tags($post->post_content),0,220); } $keywords = ""; $tags = wp_get_post_tags($post->ID); foreach ($tags as $tag ) { $keywords = $keywords . $tag->name . ", "; } } ?> <meta name="keywords" content="<?=$keywords?>" /> <meta name="description"... ">

美哉小超的博客

WordPress无插件添加关键词meta方法[优化版]

这篇文章介绍无插件为Wordpress添加关键词的优化版方法,可以解决原方法中自定义首页的关键词错误问题。

WordPress便捷易用,全世界约三成的网站使用它进行后台管理。

不过,Wordpress 有一个小缺点,其默认主题样式的html中缺乏关键词(keywords)和描述(description)的微数据(meta)。而这两个参数对于搜索引擎优化(SEO)会产生影响。为提高网站的搜索引擎表现,我们需要对此做出调整。

网上常见的添加方式如下: 在header.php文件(仪表盘>外观>编辑),在<title>标签之后添加如下代码。

<?php
if (is_home()){
$keywords = "首页关键词";
$description = "首页描述";
} elseif (is_single()){
if ($post->post_excerpt) {
$description = $post->post_excerpt;
} else {
$description = substr(strip_tags($post->post_content),0,220);
}
$keywords = "";
$tags = wp_get_post_tags($post->ID);
foreach ($tags as $tag ) {
$keywords = $keywords . $tag->name . ", ";
}
}
?>
<meta name="keywords" content="<?=$keywords?>" />
<meta name="description" content="<?=$description?>" />

上述代码大意为:判断如果是首页,则添加首页keywords和description;如果是文章页,则将文章的标签(tag)输出为keywords,并取文章的摘要(excerpt)作为description,如果没有摘要,则取文章前220个字符(注意,不是220个汉字)作为description。

其中“首页关键词”和“首页描述”需要替换为自己网站的相应内容

这个解决方案有三个小问题。

第一,home仅代表WP自动生成的原始首页,不代表自定义首页。也就是说,如果自定义了首页,使用is_home()判断是否为首页的方法就失效了。这种情况下,应改用is_front_page()。为了使解决方案更具通用性,将判断条件修改为:

if (is_home() or is_front_page()){
//首页描述和关键词赋值
}

第二,缺少回退方案。如果忘记或不需要为文章添加tag标签,则文章页面会缺少keywords关键词值。

第三,网站品牌管理不强。每个网页的描述和关键词都独立取自文章内容或编辑录入,缺少网站整体品牌信息。

上述第二、三两个问题,可通过添加网站通用关键词来解决。

改进代码如下:

<meta name="keywords" content="通用关键词 <?=$keywords?>" />
<meta name="description" content="通用关键词<?=$description?>" />

通用关键词可以是网站名称、网站主营业务等信息。这些信息与文章页信息之间可用 “|”、“-”等符号分开。

优化后的全部代码如下:

<?php
/*
*将摘要变成描述,将标签变成关键词的代码;放在header文件title之后。
*/
if (is_home() or is_front_page()){ // 如果是网站首页
$keywords = "首页关键词";  // 为关键词赋值;请将引号内的文字替换为自己网站的相关内容
$description = "首页描述";  // 为描述赋值;将引号内的文字替换为自己网站的相关内容
} elseif (is_single()){ // 如果是文章页
if ($post->post_excerpt) { // 如果文章有摘要
$description = $post->post_excerpt; // 为描述赋值,
} else { // 其它情况(如果文章没有摘要)
$description = substr(strip_tags($post->post_content),0,220); //取文章前220个字符作为描述
}
$keywords = ""; // 为关键词赋值空字符串
$tags = wp_get_post_tags($post->ID); // 获取文章标签tags
foreach ($tags as $tag ) { // 对于tags数组中的每一个元素进行如下操作
$keywords = $keywords . $tag->name . ", "; // 将数组中的元素添加到
关键词字符串的末尾,并以逗号(注意一定要是英文的逗号)隔开
}
}
?>
<meta name="keywords" content="通用关键词 | <?=$keywords?>" /> // 添加通用关键词,输出关键词
<meta name="description" content="通用描述 | <?=$description?>" /> // 添加通用描述,输出描述

如果你的网站属于品牌推广类,且内容/页面不多,那么,上述解决方案已经完全可以胜任贵站需求了。

如果你的网站属于资讯或博客等靠倚重内容的类型,那么使用tags作为页面关键词的方法很可能并不适合贵站。因为这样处理,混淆了人类阅读和机器阅读的内容,不利于网站内容管理。这种情况下,建议使用自定义字段添加关键词点击此处阅读介绍添加关键词最优方案的文章。

参考资料:
https://codex.wordpress.org/Meta_Tags_in_WordPress(英文)
https://managewp.com › blog › statistics-about-wordpress-usage (英文)
https://w3techs.com/technologies/details/cm-wordpress/all/all (英文)