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

WordPress/WooCommerce归档页添加「邮件分享此页面」链接无法获取页面URL问题

解决WordPress/WooCommerce归档页面邮件分享链接的问题

咱们先拆解你原来代码里的几个核心问题:

  1. the_title() 的使用误区:the_title() 是直接输出标题内容,不是返回字符串。当你在拼接字符串时用它,标题会先被打印出来,剩下的链接结构才会输出,直接打乱了a标签的完整性。你需要用 get_the_title(),它会返回标题文本,适合用来拼接。

  2. 嵌套 echo 的错误:你在 body 参数里写了 echo get_permalink(...),这会让链接提前被输出,而不是作为 href 属性的一部分。直接调用 get_permalink(get_queried_object_id()) 就好,它会返回当前归档页面的链接字符串。

  3. 缺少URL编码:mailto链接的subject和body参数里如果有空格、特殊字符(比如&、?),会导致链接失效。必须用 urlencode() 对这些内容进行编码,确保参数能正确传递。

下面是修正后的完整代码,你可以直接放到侧边栏模板文件(比如sidebar.php或自定义侧边栏组件)中:

<?php
// 获取当前归档页面的标题与链接
$archive_title = get_the_title(get_queried_object_id());
$archive_url = get_permalink(get_queried_object_id());

// 对标题和链接进行URL编码,避免特殊字符干扰
$encoded_subject = urlencode($archive_title);
$encoded_body = urlencode("推荐你查看这个页面:" . $archive_url);
?>

<a href="mailto:?subject=<?php echo $encoded_subject; ?>&body=<?php echo $encoded_body; ?>">邮件分享此页面</a>

如果想要更简洁的写法(可读性稍弱但代码更紧凑):

<a href="mailto:?subject=<?php echo urlencode(get_the_title(get_queried_object_id())); ?>&body=<?php echo urlencode('推荐你查看这个页面:' . get_permalink(get_queried_object_id())); ?>">邮件分享此页面</a>

补充说明:

  • 对于WooCommerce的产品归档页面(比如产品分类、标签),get_queried_object_id() 能正确获取当前归档的ID,所以这段代码完全适用。
  • 如果你想自定义邮件正文的文本,直接修改'推荐你查看这个页面:'部分即可,记得要把整个正文内容用urlencode()包裹。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.04.29 07:52:30