会员WP + WooCommerce - 需要从ID中提取昵称的方法



所以,这个让我陷入了循环。我已经联系了插件的支持,他们基本上告诉我我是 SOL,但我拒绝相信没有办法做到这一点。

我正在使用 会员WP 将销售归因于单个位置。每个会员都来自一个Wordpress用户,对于他们的昵称,我使用了他们的地址/位置。 不幸的是,该插件没有将其包含在"订单详细信息"屏幕或"订单电子邮件"中,这是一个大问题。我已经将一些代码放在一起,但不断收到各种未定义的错误,因为它们在类内执行所有操作,我想这确保了像我这样的人不能在那里摆弄?

将会员分配给订单的功能:https://github.com/AffiliateWP/AffiliateWP/blob/master/includes/integrations/class-woocommerce.php#L78

关联公司用户ID检索功能:https://github.com/AffiliateWP/AffiliateWP/blob/master/includes/affiliate-functions.php#L204

用于检索关联公司名称的函数:https://github.com/AffiliateWP/AffiliateWP/blob/master/includes/affiliate-functions.php#L132

[编辑] 最后,我的弗兰肯斯坦:

add_action( 'woocommerce_admin_order_data_after_billing_address', 'my_custom_checkout_field_display_admin_order_meta', 10, 1 );
function my_custom_checkout_field_display_admin_order_meta($order){
global $Affiliate_WP_WooCommerce;
echo '<p><strong>'.__('My Field').':</strong> ' . affiliate_wp()->affiliates->get_affiliate_name( $affiliate_id ) . '</p>';
}

这不会给我带来错误,但它确实会给我一个空白区域......

试试这个:

add_action( 'woocommerce_admin_order_data_after_billing_address', 'my_custom_checkout_field_display_admin_order_meta', 10, 1 );
function my_custom_checkout_field_display_admin_order_meta($order){
global $Affiliate_WP_WooCommerce;
$order_id       = $order->get_id();
$referrals      = affiliate_wp()->referrals->get_by( 'reference', $order_id);
$affiliate_id   = $referrals->affiliate_id;
echo '<p><strong>'.__('My Field').':</strong> ' . affiliate_wp()->affiliates->get_affiliate_name( $affiliate_id ) . '</p>';
}

affwp_get_affiliate_name方法在三个条件下返回空白:

if ( ! $affiliate = affwp_get_affiliate( $affiliate ) ) {
return '';
}
if ( ! $user_info = get_userdata( $affiliate->user_id ) ) {
return '';
}
...
// If neither are set, return an empty string.
if ( empty( $first_name ) && empty( $last_name ) ) {
return '';
}

首先手动传递您知道与包含 $first_name 和/或 $last_name 的记录关联的关联 ID,例如:

echo '<p><strong>'.__('My Field').':</strong> ' . affiliate_wp()->affiliates->get_affiliate_name(5) . '</p>';

这将排除问题是否与您当前传递的 $affiliate_id 有关。如果返回值,则修复应该是一个简单的问题。

尝试后,我会尝试更改 add_action(( 的优先级,将其提高到 999 或其他什么,因为它可能在插件中的相关钩子之前执行。

最新更新