在Woocommerce电子邮件页脚模板

时间:2017-11-15 07:37:32

标签: php wordpress woocommerce userid email-notifications

我想在woocommerce自定义电子邮件模板中获取current_user_id,但它返回0.有没有人知道如何在wordpress中的电子邮件模板中获取user_id。我在任何php模板中使用此代码时都会获得用户ID。

以下是我的代码:

<?php global $current_user;
      get_currentuserinfo();
      echo '<h4>Your code:</h3>' . $current_user->ID . '';
?>

这是完整的模板代码链接: email-template-code

2 个答案:

答案 0 :(得分:2)

  

您无法在woocommerce电子邮件模板中获取当前用户,但您可以从订单中获取客户用户ID

要获取客户用户ID,您可以在 $GLOBAL 变量中设置并获取一些数据:

  • 设置数据 - 在您的有效主题function.php文件中:
add_action( 'woocommerce_email_header', 'wc_email_user_id', 10, 2 );
function wc_email_user_id( $email_heading, $email ) {
    // Set global variable data: user ID and Order ID
    $GLOBALS['emails_custom_data'] = array(
        'user_id' => get_post_meta( $email->object->ID, '_customer_user', true ), // Set the user ID
        'order_id' => $email->object->ID, // Set the Order ID
    );
}
  • 获取数据 - 在您的模板文件之后:
if ( ! defined( 'ABSPATH' ) ) {
    exit; // Exit if accessed directly
}

## --- Your custom Code start here --- ##

$refNameGlobalsVar = $GLOBALS; // Get the data
$custom_data = $refNameGlobalsVar['emails_custom_data']; // Set the data in a variable

$user_id = $custom_data['user_id']; // Get the user ID
$order_id = $custom_data['order_id']; // Get the order ID (in case of…)

// Testing output
echo '<p>The user ID is '.$user_id.' | From the Order ID: '.$order_id.'</p>';

## --- End of custom code --- ##

?>

此代码经过测试并正常运行

答案 1 :(得分:1)

我认为你应该像你已经在电子邮件模板中使用的那样使用wordpress钩子:

apply_filters( 'woocommerce_email_footer_text', get_option( 'woocommerce_email_footer_text' )

而不是像这样直接写作

global $current_user;
get_currentuserinfo();
echo '<h4>Your code:</h3>' . $current_user->ID . '';

您可以像这样应用过滤器

global $current_user;
apply_filters( 'woocommerce_custom_template_email', $current_user->ID );

当触发发送电子邮件的电子邮件功能时,您可以像这样使用add_filter

add_filters( 'woocommerce_custom_template_email', 'custom_email_function' );
function custom_email_function($user_id) {
    global $current_user;
    $user_id = $current_user->ID;
    return $user_id;
}

也许通过这种方式,您可以获得当前的用户ID。另外,请确保您尝试获取已登录用户的当前用户ID。