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

如何在WordPress的BuddyPress用户资料页添加邮件当前页面PHP按钮

解决BuddyPress用户资料页“邮件当前页面”按钮的URL问题

我来帮你搞定这个邮件按钮的问题!你的代码没成功把当前页面URL放进邮件正文,主要是两个小问题:一是单引号包裹的字符串里PHP变量不会被解析,二是你没正确获取BuddyPress用户资料页的专属URL。

下面是修正后的代码,我会一步步给你解释:

function my_custom_button() {
    // 用BuddyPress内置函数获取当前用户资料页的完整URL
    $current_profile_url = bp_displayed_user_domain();
    // 对URL进行编码,避免邮件链接里的特殊字符导致格式错误
    $encoded_url = urlencode($current_profile_url);
    
    // 输出按钮HTML,通过字符串拼接确保变量被正确替换
    echo '<br/><div class="mcb"><a href="mailto:?subject=Check out this profile&body=' . $encoded_url . '" title="Email this profile">EMAIL THIS PROFILE</a></div>';
}
add_filter( 'bp_before_member_header_meta', 'my_custom_button' );

关键修改点说明:

  • bp_displayed_user_domain():这是BuddyPress专门为用户资料页设计的函数,能精准返回当前浏览的用户资料页完整URL,比通用的get_permalink()更适配BuddyPress的页面结构,不会出错。
  • urlencode():把URL里的特殊字符(比如&、/)转成邮件系统能正确识别的编码,防止URL被截断或者显示乱码。
  • 字符串拼接替代单引号变量:原代码里的$currentpage写在单引号里,PHP不会把它当成变量解析,改成字符串拼接后,变量值才会被正确插入到邮件链接里。

如果你想在邮件正文里添加更多说明文字,比如引导语,可以这样调整:

function my_custom_button() {
    $current_profile_url = bp_displayed_user_domain();
    // 组合正文内容并编码
    $email_body = urlencode('Check out this interesting user profile: ' . $current_profile_url);
    
    echo '<br/><div class="mcb"><a href="mailto:?subject=Check out this profile&body=' . $email_body . '" title="Email this profile">EMAIL THIS PROFILE</a></div>';
}
add_filter( 'bp_before_member_header_meta', 'my_custom_button' );

把这段代码替换你原来的函数,刷新用户资料页就能看到能正常传递URL的邮件按钮啦!

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.26 10:32:10