web-dev-qa-db-fra.com

WooCommerce: afficher du texte au lieu de l'email de valeur brute d'une case à cocher

J'ai configuré avec succès certains champs personnalisés à la caisse et tout fonctionne bien.

J'ai une case à cocher comme l'un des champs, my_gift_wrap_checkbox, et j'ai réussi à écrire du code pour afficher du texte dans la page des commandes (' oui s'il vous plaît! ' ou ' non merci ') au lieu d'une simple blank ou 1 si elle est cochée ou non.

Je n'arrive pas à comprendre comment obtenir la même chose dans le code de courrier électronique. Mon code est:

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

function my_woocommerce_email_order_meta_keys( $keys ) {
    $keys['Gift wrap?'] = 'my_gift_wrap_checkbox';
    $keys['Gift wrap instructions'] = 'my_gift_wrap_field';
    return $keys;
}

Maintenant:

  • Si c'est coché , je reçois Gift wrap?: 1
    • Je veux Gift wrap?: Yes please!
  • Si n'est pas coché , Gift wrap?:
    • Je veux Gift wrap?: No thank you.
2
user9557

Essayez ceci à la place:

add_action( "woocommerce_email_after_order_table", "my_woocommerce_email_after_order_table", 10, 1);

function my_woocommerce_email_after_order_table( $order ) {
    $my_gift_wrap_checkbox = get_post_meta( $order->id, "my_gift_wrap_checkbox", true );
    $gift_wrap = $my_gift_wrap_checkbox ? 'Yes please!' : 'No thank you.';

    echo '<p><strong>Gift wrap?: </strong>' . $gift_wrap . '</p>';

    if ( $my_gift_wrap_checkbox ) {
        echo '<p><strong>Gift wrap instructions: </strong>' . get_post_meta( $order->id, "my_gift_wrap_field", true ) . '</p>';
    }

}
1
Nate Allen