Как восстановить метаданные в электронном письме о новом заказе, отправленном администратору WooCommerce - PullRequest
1 голос
/ 04 апреля 2020

Я добавил настраиваемое поле для каждого варианта товара в моем магазине:

add_action( 'woocommerce_variation_options_pricing', 'bbloomer_add_rangement_to_variations', 10, 3 );

function bbloomer_add_rangement_to_variations( $loop, $variation_data, $variation ) {
woocommerce_wp_text_input( array(
            'id' => 'rangement[' . $loop . ']',
            'placeholder' => 'Ex : Armoire 2',
            'label' => __('Rangement', 'woocommerce'),
            'desc_tip' => 'true',
            'class' => 'short',
            'wrapper_class' => 'form-row',
            'value' => get_post_meta( $variation->ID, 'rangement', true )
)
);
}

И я сохранил это в метаданных варианта

// 3. Store custom field value into variation data

add_filter( 'woocommerce_available_variation', 'bbloomer_add_rangement_variation_data' );

function bbloomer_add_rangement_variation_data( $variations ) {
$variations['rangement'] = '<div class="woocommerce_rangement">Custom Field: <span>' . get_post_meta( $variations[ 'variation_id' ], 'rangement', true ) . '</span></div>';
return $variations;
}

И теперь я бы хотел отобразить эти метаданные в письме, отправленном администратору при получении нового заказа, но я не хочу отображать его на странице оплаты или в почте клиента.

Не могли бы вы помочь мне решить эту проблему?

1 Ответ

0 голосов
/ 06 апреля 2020

Я нашел, как отобразить свое пользовательское поле в корзине и электронном письме с этим кодом:

// display custom field in cart and email  
add_filter( 'woocommerce_cart_item_name', 'showing_rgt_in_cart_items', 99, 3 );
function showing_rgt_in_cart_items( $item_name, $cart_item, $cart_item_key ) {
    // The WC_Product object
    $product = $cart_item['data'];
    // Get the  rangement
    $rgt = get_post_meta( $product->get_id(), 'rangement', true );
    // When rgt doesn't exist
    if(empty($rgt)) return $item_name;

    // Add the rangement field
    $item_name .= '<br><small class="product-sku">' . __( "Rangement: ", "woocommerce") . $rgt . '</small>';

    return $item_name;
}

Но как я могу отобразить его только в электронной почте администратора?

...