17 SEO、Schema 与 wp_head

整理 meta、canonical、Open Graph、JSON-LD、面包屑和标题过滤场景。

17 SEO、Schema 与 wp_head

本页关键词

wp_head meta schema JSON-LD document_title_parts

学习目标

代码使用提醒

本页代码适合用于学习和研究。复制到正式网站前,请先备份,并优先在测试环境验证。

涉及用户输入、后台保存、接口请求、删除操作和邮件发送时,要同时考虑权限、nonce、sanitize、validate 和 escape。

1. 页面 meta description

基础
<?php function mysite_meta_description() { if ( is_singular() ) { $desc = get_the_excerpt(); if ( $desc ) { echo '<meta name="description" content="' . esc_attr( wp_strip_all_tags( $desc ) ) . '">' . "\n"; } } } add_action( 'wp_head', 'mysite_meta_description' );
如果使用 SEO 插件,要避免重复输出。

2. Canonical URL

SEO
<?php function mysite_canonical_url() { if ( is_singular() ) { echo '<link rel="canonical" href="' . esc_url( get_permalink() ) . '">' . "\n"; } } add_action( 'wp_head', 'mysite_canonical_url' );
SEO 插件通常会处理 canonical,不要重复。

3. Open Graph 基础信息

SEO
<?php function mysite_open_graph_tags() { if ( ! is_singular() ) { return; } echo '<meta property="og:title" content="' . esc_attr( get_the_title() ) . '">' . "\n"; echo '<meta property="og:url" content="' . esc_url( get_permalink() ) . '">' . "\n"; if ( has_post_thumbnail() ) { echo '<meta property="og:image" content="' . esc_url( get_the_post_thumbnail_url( null, 'large' ) ) . '">' . "\n"; } } add_action( 'wp_head', 'mysite_open_graph_tags' );
社交分享信息可用 OG 标签控制。

4. JSON-LD Organization 示例

Schema
<?php function mysite_organization_schema() { $data = array( '@context' => 'https://schema.org', '@type' => 'Organization', 'name' => get_bloginfo( 'name' ), 'url' => home_url( '/' ), ); echo '<script type="application/ld+json">' . wp_json_encode( $data, JSON_UNESCAPED_SLASHES | JSON_UNESCAPED_UNICODE ) . '</script>'; } add_action( 'wp_head', 'mysite_organization_schema' );
JSON-LD 建议用 wp_json_encode 生成。

5. 修改文档标题 parts

SEO
<?php function mysite_document_title_parts( $title ) { if ( is_front_page() ) { $title['tagline'] = 'Premium Outdoor Building Materials'; } return $title; } add_filter( 'document_title_parts', 'mysite_document_title_parts' );
title-tag 主题支持开启后,可以过滤文档标题 parts。

6. 简单面包屑输出

导航
<?php function mysite_breadcrumbs() { echo '<nav class="breadcrumbs"><a href="' . esc_url( home_url( '/' ) ) . '">Home</a>'; if ( is_singular() ) { echo ' / <span>' . esc_html( get_the_title() ) . '</span>'; } echo '</nav>'; }
复杂项目建议用 SEO 插件或更完整的面包屑逻辑。

本页总结

SEO 代码可以处理 meta、OG、Schema 和标题,但如果已使用 SEO 插件,要避免重复输出和冲突。