手写 head 的代价:title/description 该谁管

作者: admin 分类: wordpress主题制作教程 发布时间: 2026-11-06 18:33

手写 head 的诱惑

自己写 head 看起来很爽:title 想改就改、description 想加就加、CSS 顺序自己定。不用管插件,不用猜它在哪插了一行。

caogenbj 原来就是这么干的:header.php 里手写了 title、description、favicon、两个 CSS、两个 JS,一行 wp_head() 都没有。

但这么干了之后,我付出了三个代价。

代价一:插件全部失效

这个上一篇讲过了。wp_head() 是出口,没有出口,插件进不来。

我当时还觉得“我不用插件不就行了”——但后来发现,很多东西(缓存、SEO、安全、备份)还是插件更省事。你把门关死,等于放弃了整个生态。

代价二:SEO 标签写着写着就错了

这个代价更隐蔽。手写 description 的时候,我写的是:

<?php
$miaoxu = description();
?>
<meta name="description" content="<?php echo $miaoxu; ?>" />

而这个 description() 函数里,取正文用的是 get_the_content()——它不会执行短代码。

结果就是:文章里如果有 这种短代码,description 里会原样出现 。读者在搜索结果里看到的是一串中括号。

更糟的是,description() 里还用 wp_trim_words($description, 130) 截断——这个函数按“空格”分词,中文整段没空格,等于不截断,描述长度失控。

这两个问题,插件本来会帮你处理(SEO 插件对 description 有专门的处理逻辑)。手写就全得自己兜。

代价三:每加一个功能就要改一次

手写 head 是“静态”的。以后想加个 OG 标签、加个结构化数据、加个站点验证 meta,都得手动改 header.php。

而且这些标签分散在 head 各处,改起来容易漏、容易冲突(比如 title 输出了两遍)。

正确做法:框架留给自己,细节交给钩子

head 只留最小的框架:

<head>
<meta charset="<?php bloginfo( 'charset' ); ?>">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<?php wp_head(); ?>
</head>

具体的 title、description、canonical、OG、JSON-LD,用两种方式之一:

  1. 装一个 SEO 插件(让它通过 wp_head() 输出);
  2. 自己写一个 head-seo.php,在 wp_head() 之前 include 进来。

我选了第二种,因为我不想为了几个标签装一个重插件。关键是:这些标签集中在一个文件里,改起来方便,也不会跟插件打架。

一个必须注意的点

如果你既自己输出 title/description,又装了 SEO 插件,会出现两个 title、两个 description。这比没有更糟。

所以二选一:要么全交给插件,要么全自己来。别混着。

小结

一句话记住:手写 head 的代价是“插件失效 + 标签写错 + 维护成本高”;正确做法是 head 只留框架 + wp_head,细节集中在自己的 head-seo 或交给插件。

下一篇开始讲“零件”:先是导航菜单。

本系列导航

相关文章

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

Powered by 草根站长笔记 © 2015-2026 草根站长笔记 Inc.版权所有,禁止转载