2017-11-15 13 views
1

woocommerceカスタム電子メールテンプレートでcurrent_user_idを取得しようとしていますが、0を返します。誰かがwordpressの電子メールテンプレートでuser_idを取得する方法を知っていますか?私は任意のPHPテンプレートでこのコードを使用すると、私はユーザーIDを取得します。以下はWoocommerce電子メールフッタテンプレート

は私のコードです:私はあなたはすでにあなたの電子メールテンプレートで使用するようなワードプレスのフックを使うべきだと思う email-template-code

+0

動作します。変数およびget_currentuserinfo()関数を使用します。単にget_current_user_id()を使用してください。どちらかが機能しない場合は、そのテンプレート関数のコード全体を提供する必要があります。あなたはそのコードの別の部分で間違ったことをしているかもしれません。 –

+0

@ Elvin85 okそれを試してみてください。 –

+0

@ Elvin85それは0を返します。私は現在完全なファイルコードを追加しています。 –

答えて

1

あなたは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 --- ## 

?> 

は、このコードがテストされていて、世界的な必要はありませんので、idは、単一の機能を持つことも可能である取得

1

:ここ

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

は、完全なテンプレートコードのリンクである

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 . ''; 

たぶん、この方法では、現在のユーザーIDを取得することができますが、この

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

のようにフィルタを適用でき、電子メールの送信を担当メール機能がトリガされたとき、あなたはこの

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; 
} 

ようADD_FILTER使用します。 Alseは、あなたがログインしているユーザーの現在のユーザーIDを取得しようとしていることを確認します。

+0

このコードを使用しましたが、http 500のエラーが発生しました。 –

+0

私はこのコードがずっと強力だとは思わない。 –

+0

コードサンプルを表示できますか? –

関連する問題