自定义字段值无法到达邮件

时间:2012-11-29 17:55:12

标签: php html woocommerce

iam使用woocommerce插件...实际上这是一个php怀疑我有...我使用一些自定义字段,所以我shuld获取这些自定义字段的值到我的电子邮件..

当我使用一个自定义字段“我的字段”时,我可以获得我的电子邮件的价值,但我不知道如何将所有自定义字段的值添加到我的电子邮件中..

以下是适用于单个自定义字段的代码:(从此处开始:https://gist.github.com/3905785

/**
 * Add the field to the checkout
 **/
add_action('woocommerce_after_order_notes', 'my_custom_checkout_field');

function my_custom_checkout_field( $checkout ) {

    echo '<div id="my_custom_checkout_field"><h3>'.__('My Field').'</h3>';
    woocommerce_form_field( 'my_field_name', array( 
        'type'          => 'checkbox', 
        'class'         => array('my-field-class form-row-wide'), 
        'label'         => __('Fill in this field'), 
        'placeholder'   => __('Enter a number'),
        ), $checkout->get_value( 'my_field_name' ));

    echo '</div>';
}

/**
 * Update the order meta with field value
 **/
add_action('woocommerce_checkout_update_order_meta', 'my_custom_checkout_field_update_order_meta');

function my_custom_checkout_field_update_order_meta( $order_id ) {
    if ($_POST['my_field_name']) update_post_meta( $order_id, 'My Field', esc_attr($_POST['my_field_name']));
}

/**
 * Add the field to order emails
 **/
add_filter('woocommerce_email_order_meta_keys', 'my_custom_checkout_field_order_meta_keys');

function my_custom_checkout_field_order_meta_keys( $keys ) {
    $keys[] = 'My Field';
    return $keys;
}


我在下面的代码中尝试了2个自定义字段:(以下代码没有为我的邮件获取任何自定义字段值..)请告诉我在下面的代码中我做错了什么:

/**
 * Add the field to the checkout
 **/
add_action('woocommerce_after_order_notes', 'my_custom_checkout_field');

function my_custom_checkout_field( $checkout ) {

    echo '<div id="my_custom_checkout_field"><h3>'.__('My Field').'</h3>';
    woocommerce_form_field( 'my_field_name', array( 
        'type'          => 'checkbox', 
        'class'         => array('my-field-class form-row-wide'), 
        'label'         => __('Fill in this field'), 
        'placeholder'   => __('Enter a number'),
        ), $checkout->get_value( 'my_field_name' ));

    echo '</div>';



  echo '<div id="my_custom_checkout_field"><h3>'.__('Keywords').'</h3>';

    woocommerce_form_field( 'keywords', array(
        'type'          => 'text',
        'class'         => array('my-field-class form-row-wide'),
        'label'         => __('Fill in this field'),
        'placeholder'       => __('Enter something'),
        ), $checkout->get_value( 'keywords' ));

    echo '</div>';
}

/**
 * Update the order meta with field value
 **/
add_action('woocommerce_checkout_update_order_meta', 'my_custom_checkout_field_update_order_meta');

function my_custom_checkout_field_update_order_meta( $order_id ) {
    if ($_POST['my_field_name']) update_post_meta( $order_id, 'My Field', esc_attr($_POST['my_field_name']));

        if ($_POST['keywords']) update_post_meta( $order_id, 'Keywords', esc_attr($_POST['keywords']));
}

/**
 * Add the field to order emails
 **/
add_filter('woocommerce_email_order_meta_keys', 'my_custom_checkout_field_order_meta_keys');

function my_custom_checkout_field_order_meta_keys( $keys ) {
    $keys[] = 'My Field,Keywords';
    return $keys;
}

1 个答案:

答案 0 :(得分:1)

首先,这一行:

$keys[] = 'My Field,Keywords';

应更改为:

$keys[] = 'My Field';
$keys[] = 'Keywords';

您所拥有的代码是使用字符串“My Field,Keywords”创建一个数组条目,而不是使用字符串“My Field”和“Keywords”创建一个数组条目。

这绝对是问题的原因之一。

它可能并不重要但你应该改变第二个div标签的id - 让多个具有相同id的元素不好。

进行这些更改,然后重试。如果还有其他问题,我们可以依次处理它们。

我希望这会有所帮助。