WordPress/WooCommerce归档页添加「邮件分享此页面」链接无法获取页面URL问题
解决WordPress/WooCommerce归档页面邮件分享链接的问题
咱们先拆解你原来代码里的几个核心问题:
the_title()的使用误区:the_title()是直接输出标题内容,不是返回字符串。当你在拼接字符串时用它,标题会先被打印出来,剩下的链接结构才会输出,直接打乱了a标签的完整性。你需要用get_the_title(),它会返回标题文本,适合用来拼接。嵌套
echo的错误:你在body参数里写了echo get_permalink(...),这会让链接提前被输出,而不是作为href属性的一部分。直接调用get_permalink(get_queried_object_id())就好,它会返回当前归档页面的链接字符串。缺少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
相关产品推荐
相关产品推荐

