チェックアウト完了後にカスタムフィールドを作成するために、WooCommerce Custom Order Data PlugIn をインストールしました。カスタム プラグインでは、woocomerce_thankyou-hook を使用して注文からデータを収集し、$order->custom->officer_text に文字列として保存します。
そのカスタム データを admin-new-order-mail に出力する必要がありますが、その方法がわかりません。
echo $order->custom->officer_text
admin-new-order-mail.php では機能しません。
ありがとうページのデータを print_r できるので、そこにあることがわかります。しかし、メールテンプレートではうまくいきません。
どうすれば機能しますか?
編集:
カスタム プラグインのコードを投稿するのを忘れていました。
if ( ! defined( 'ABSPATH' ) ) exit; // Exit if accessed directly
if ( in_array( 'woocommerce/woocommerce.php', apply_filters( 'active_plugins', get_option( 'active_plugins' ) ) ) ) {
global $woocommerce;
// Action after order is submitted
add_action('woocommerce_thankyou', 'woocommerce_officer_data');
// function to populate a custom field in $order
function woocommerce_officer_data($order_id) {
$order = new WC_Order( $order_id );
// create custom field
WC_CustomOrderData::extend($order);
$order->custom->officer_text = '';
$officer = '';
// get date and format
$date = DateTime::createFromFormat('Y-m-d H:i:s', $order->order_date);
$orderdate = $date->format('d.m.Y');
$ordertime = $date->format('H:i:s');
$officer .= '##Officer-START##<br>Datum:' . $orderdate . '<br>Zeit:' . $ordertime . '<br>';
$officer .= $order_id . '|' . $order_id . '|' . $order->billing_first_name . '|' . $order->billing_last_name . '|';
$officer .= $order->billing_country . '|' . $order->billing_postcode . '|' . $order->billing_city . '|' ;
$officer .= $order->shipping_address_1 . '|' . $order->billing_email . '|' . $order->billing_phone . '|' ;
$order->custom->officer_text = $officer;
$order->custom->save();
echo $order->custom->officer_text;
}
}
フィールドは ul.order_details.bacs_details の直後に出力されます
しかし、thankyou.php で print_r($order) を実行すると、カスタム データが存在しません。
プラグインの print_r($order->custom) は私にこれを与えます:
WC_CustomOrderData Object
(
[order_id:WC_CustomOrderData:private] => 241
[fields:WC_CustomOrderData:private] => Array
(
[officer_text] => ##Officer-START##
Datum:09.10.2013
Zeit:12:00:38
241|241|Peter|Petersen|DE|11111|Xtown|Ystreet 53|foo@example.de||01xx 654 xxx xx|
)
)
私は本物のコーダーではないので、これまでのところ満足していますが、最初の小さなプラグインの出力を制御する方法がわかりません。だから、誰かが私に「ベストプラクティス」の解決策を示すことができれば、それは素晴らしいことです.