Thème : Ajouter des Metabox à l'admin page de commande

Je suis actuellement avec succès ajout d'un champ à mon Thème les pages des produits, qui est de montrer la valeur:

  • dans le panier (front-end),
  • sur la page de paiement (front-end),
  • sur la page de commande (front-end),
  • et dans l'admin de commande page (back-end).

Le problème: Il n'apparaît pas comme un champ personnalisé dans l'admin de l'ordre "champs personnalisés" Metabox avec la valeur à l'intérieur, mais comme un texte dans la page de commande.

Voici mon code de travail:

//Add the field to the product
add_action('woocommerce_before_add_to_cart_button', 'my_custom_checkout_field');
function my_custom_checkout_field() {
echo '<div id="my_custom_checkout_field"><h3>'.__('My Field').'</h3>';
echo  '<label>fill in this field</label> <input type="text" name="my_field_name">';
echo '</div>';
}
//Store custom field
function save_my_custom_checkout_field( $cart_item_data, $product_id ) {
if( isset( $_REQUEST['my_field_name'] ) ) {
$cart_item_data[ 'my_field_name' ] = $_REQUEST['my_field_name'];
/* below statement make sure every add to cart action as unique line item */
$cart_item_data['unique_key'] = md5( microtime().rand() );
}
return $cart_item_data;
}
add_action( 'woocommerce_add_cart_item_data', 'save_my_custom_checkout_field', 10, 2 );
//Render meta on cart and checkout
function render_meta_on_cart_and_checkout( $cart_data, $cart_item = null ) {
$custom_items = array();
/* Woo 2.4.2 updates */
if( !empty( $cart_data ) ) {
$custom_items = $cart_data;
}
if( isset( $cart_item['my_field_name'] ) ) {
$custom_items[] = array( "name" => 'My Field', "value" => $cart_item['my_field_name'] );
}
return $custom_items;
}
add_filter( 'woocommerce_get_item_data', 'render_meta_on_cart_and_checkout', 10, 2 );
//This is what I think needs changing?
function subscription_order_meta_handler( $item_id, $values, $cart_item_key ) {
if( isset( $values['my_field_name'] ) ) {
wc_add_order_item_meta( $item_id, "My Field", $values['my_field_name'] );
}
}
add_action( 'woocommerce_add_order_item_meta', 'subscription_order_meta_handler', 1, 3 );

Je pense que c'est le dernier bout de code qui doit être changé. Actuellement, il montre que le texte sous le poste de commande, donc j'ai peut-être besoin d'ajuster wc_add_order_item_meta à quelque chose d'autre?

J'ai tout essayé mais il ne semble pas fonctionner. Je peux le faire fonctionner lorsque mon domaine est sur la page de paiement mais pas quand je le tire sur la page du produit.

Peut-être que je suis absent un processus de commande extrait?

Le champ personnalisé d'avoir une liste de DVD, de sorte que la sortie sera quelque chose comme: DVD 1, DVD 2. Je vais avoir besoin d'être en mesure de retirer le DVD, j'ai envoyé donc je n'ai pas les envoyer à deux reprises.

OriginalL'auteur MV-123 | 2016-06-12