You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Next.js 13自定义元标签:如何控制name/property属性?

在Next.js 13中自定义元标签并控制name/property属性的方法

当然可以实现,针对你提到的og:updated_time这类需要property属性的自定义元标签,有两种直接可行的方案:

方案1:直接渲染原生<meta>标签

在App Router的layout.js或page.js中,直接在<head>里手动添加原生<meta>标签,完全自定义属性和内容,不受Next.js内置Metadata API的限制:

// app/layout.js
export default function RootLayout({ children }) {
  return (
    <html lang="zh-CN">
      <head>
        <meta property="og:updated_time" content="2024-05-20T12:00:00Z" />
        {/* 其他需要property属性的自定义标签也这么加 */}
        <meta property="og:custom_field" content="自定义内容" />
      </head>
      <body>{children}</body>
    </html>
  );
}

这种方式最灵活,想定义什么属性就加什么,完全符合需求。

方案2:通过Metadata API的openGraph字段扩展

Next.js的Metadata API会自动为openGraph下的字段生成带property属性的元标签,哪怕是官方没预定义的字段也支持。比如你需要的og:updated_time,可以直接在openGraph里添加updatedTime键(驼峰命名会自动转成短横线格式):

// app/layout.js
export const metadata = {
  openGraph: {
    title: "页面标题",
    description: "页面描述",
    // 自定义og标签,自动生成property属性
    updatedTime: "2024-05-20T12:00:00Z",
    customField: "自定义内容"
  }
};

export default function RootLayout({ children }) {
  return (
    <html lang="zh-CN">
      <body>{children}</body>
    </html>
  );
}

这段代码会自动生成:

<meta property="og:updated_time" content="2024-05-20T12:00:00Z" />
<meta property="og:custom_field" content="自定义内容" />

为什么other字段不适用?

metadata里的other字段是用来处理非规范的通用元标签,默认会使用name属性,所以不适合og:这类需要property属性的标签,直接用上面两种方案就可以解决问题。

内容的提问来源于stack exchange,提问作者Lucas

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.15 09:33:27