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

WordPress头部meta获取文章slug拼接多域名hreflang链接报错解决

错误原因

你之前使用https://domainB<?php the_permalink(); ?>写法报错的核心原因有两个:

  • the_permalink()会直接输出包含当前站点完整域名的文章全路径,硬拼接其他域名会生成https://domainBhttps://currentdomain.com/post-slug这类格式错误的链接
  • 未经过WordPress安全函数处理的硬拼接跨域链接,会触发系统的nonce安全校验,直接抛出nonce_failure报错
实现方案

正确实现需要先提取文章不含域名的相对路径,再分别和两个域名拼接,通过WordPress官方钩子挂载到头部输出。将以下代码放入当前主题的functions.php文件,或者通过代码片段插件插入即可生效:

add_action('wp_head', function() {
    // 仅在文章、页面、自定义文章类型详情页执行,避免非详情页输出无效链接
    if (!is_singular()) return;
    
    global $post;
    // 解析永久链接,提取不含域名的相对路径,自动适配所有固定链接结构
    $post_relative_path = wp_parse_url(get_permalink($post->ID), PHP_URL_PATH);
    
    // 替换为你实际持有的两个域名,注意域名末尾不要加斜杠
    $domain_en = 'https://domainA.com';
    $domain_za = 'https://domainB.com';
    
    // 输出en版本alternate链接
    printf(
        '<link rel="alternate" href="%s" hreflang="en" />%s',
        esc_url($domain_en . $post_relative_path),
        PHP_EOL
    );
    
    // 输出za版本alternate链接
    printf(
        '<link rel="alternate" href="%s" hreflang="za" />%s',
        esc_url($domain_za . $post_relative_path),
        PHP_EOL
    );
});
注意事项
  • 代码中$domain_en、$domain_za的值需要替换为你实际持有的两个域名,域名末尾不要添加斜杠,避免生成双斜杠的异常路径
  • 路径提取逻辑兼容所有WordPress固定链接结构,不需要手动调整slug拼接规则
  • 所有输出链接都经过WordPress官方esc_url()函数做安全转义,符合系统安全规范,不会触发nonce校验错误
  • 最终输出的标签格式完全符合你的预期,示例效果如下:
<link rel="alternate" href="https://domainA.com/postname" hreflang="en" />
<link rel="alternate" href="https://domainB.com/postname" hreflang="za" />

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.29 22:33:25