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

AffiliateWP+WooCommerce:如何通过ID获取推广者昵称并展示

解决AffiliateWP推广者昵称(地点)在WooCommerce订单详情及邮件中显示的问题

你的思路方向是对的,但代码里缺少了获取当前订单对应推广者ID的关键步骤,导致get_affiliate_name拿不到有效数据,所以才显示空白。我来帮你修正并完善解决方案:

问题分析

你直接使用了未定义的$affiliate_id,且没有确保affiliate_wp()实例的正确调用逻辑。实际上AffiliateWP会把订单关联的推广者ID存在WooCommerce订单的元数据里,我们需要先从订单中取出这个ID,再去获取对应的推广者信息。

修正后的后台订单详情显示代码

这段代码会在后台订单页面的账单地址下方,显示推广者的昵称(也就是你设置的地点/地址):

add_action( 'woocommerce_admin_order_data_after_billing_address', 'display_affiliate_location_in_admin_order', 10, 1 );
function display_affiliate_location_in_admin_order( $order ) {
    // 从订单元数据中获取关联的推广者ID
    $affiliate_id = $order->get_meta( '_affiliate_wp_affiliate_id' );

    // 确保推广者ID存在,且相关函数可用
    if ( $affiliate_id && function_exists( 'affwp_get_affiliate_user_id' ) ) {
        // 通过推广者ID获取对应的WordPress用户ID
        $user_id = affwp_get_affiliate_user_id( $affiliate_id );
        
        if ( $user_id ) {
            // 获取用户设置的昵称(即你的地点/地址信息)
            $affiliate_location = get_user_meta( $user_id, 'nickname', true );
            
            if ( $affiliate_location ) {
                echo '<p><strong>' . esc_html__( '关联推广地点:', 'text-domain' ) . '</strong> ' . esc_html( $affiliate_location ) . '</p>';
            }
        }
    }
}

扩展:在订单邮件中同步显示推广者地点

如果需要在订单确认邮件等场景也展示这个信息,可以添加以下代码:

add_action( 'woocommerce_email_order_meta', 'display_affiliate_location_in_order_email', 10, 4 );
function display_affiliate_location_in_order_email( $order, $sent_to_admin, $plain_text, $email ) {
    $affiliate_id = $order->get_meta( '_affiliate_wp_affiliate_id' );

    if ( $affiliate_id && function_exists( 'affwp_get_affiliate_user_id' ) ) {
        $user_id = affwp_get_affiliate_user_id( $affiliate_id );
        
        if ( $user_id ) {
            $affiliate_location = get_user_meta( $user_id, 'nickname', true );
            
            if ( $affiliate_location ) {
                // 适配纯文本和HTML邮件两种格式
                if ( $plain_text ) {
                    echo esc_html__( '关联推广地点:', 'text-domain' ) . ' ' . esc_html( $affiliate_location ) . "\n";
                } else {
                    echo '<p><strong>' . esc_html__( '关联推广地点:', 'text-domain' ) . '</strong> ' . esc_html( $affiliate_location ) . '</p>';
                }
            }
        }
    }
}

关键细节说明

  1. 安全获取推广者ID:_affiliate_wp_affiliate_id是AffiliateWP存储订单关联推广者的标准元数据键,用$order->get_meta()获取更符合WooCommerce的规范。
  2. 关联用户ID:利用affwp_get_affiliate_user_id()将推广者ID转为对应的WordPress用户ID,这也是你提供的官方函数里的核心方法。
  3. 精准获取地点信息:因为你把推广者的WordPress用户昵称设为了地点,所以直接通过get_user_meta取出nickname字段就能拿到目标值。
  4. 安全输出:用esc_html()和esc_html__()处理输出内容,避免XSS安全风险,同时支持多语言翻译。

你可以把代码添加到WordPress主题的functions.php文件中,或者使用自定义功能插件来保存,这样主题更新时不会丢失代码。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.28 07:15:35