Sto utilizzando l'estensione [Product Add-ons] [1] per WooCommerce, che consente campi personalizzati per i prodotti. Questo viene automaticamente visualizzato sul modello di singolo prodotto.WooCommerce: come visualizzare i campi dall'estensione "Product Add-ons"?
Con alcune prove ed errori con il modello di prodotto singolo, sembra che si agganci da qualche parte in woocommerce_single_product_summary
(single_meta?).
Ho bisogno di ottenere lo stesso set di campi modulo da visualizzare sul modello archive-product
(l'elenco di prodotti). Nel mio caso, questo è un campo per una richiesta di carta e uno per la data di consegna. Entrambi sono necessari prima che il prodotto possa essere aggiunto al carrello dall'archivio del prodotto. Non sono sicuro che ci sia una funzione che posso chiamare per questo, se implica una codifica più avanzata.
risposta di Per Pelmered, sono stato in grado di ottenere l'add-on campi di presentarsi con l'aggiunta di questo al functions.php:
add_action('woocommerce_after_shop_loop_item_title', array($GLOBALS['Product_Addon_Display'], 'display'), 10);
1 ° tentativo
Poi, il il problema era che l'archivio del prodotto non stava creando un elemento del modulo, solo un collegamento di ancoraggio per il pulsante Aggiungi al carrello. Quindi ho provato a inserire manualmente un modulo. Codice da content-product.php
:
<?php do_action('woocommerce_before_shop_loop_item'); ?>
<h2><?php the_title(); ?></h2>
<?php // MANUALLY PUT IN FORM, BECAUSE HOOKS ONLY PUT IN A BUTTON AND NO FORM. NEEDED FOR ADD-ON FIELDS ?>
<form class="cart" method="post" enctype='multipart/form-data'>
<?php
/**
* woocommerce_after_shop_loop_item_title hook
*
* @hooked woocommerce_template_loop_rating - 5
* @hooked woocommerce_template_loop_price - 10
*/
do_action('woocommerce_after_shop_loop_item_title');
?>
<div itemprop="description">
<?php the_content(); ?>
</div>
<input type="hidden" name="add-to-cart" value="<?php echo esc_attr($product->id); ?>" />
<button type="submit" class="single_add_to_cart_button button alt"><?php echo $product->single_add_to_cart_text(); ?></button>
</form>
<?php //do_action('woocommerce_after_shop_loop_item'); ?>
Questo ha funzionato, ma tipo di scombina i messaggi istantanei di presentazione e AJAX. Dopo aver fatto clic sul pulsante Aggiungi al carrello, la pagina viene visualizzata per l'aggiornamento, quindi sembra che non sia successo nulla. Ma quando vai su un'altra pagina, visualizza i messaggi (e possono essere impilati più volte).
2 ° tentativo
Così ho visto che il pulsante originale della spesa AJAX (non all'interno di un form) stava usando una stringa di query per inviare l'ID del prodotto. Quindi ora sto tentando di virare su parametri aggiuntivi modificando l'add to cart JS. Questo ha funzionato. Quello che ho aggiunto è la risposta accettata.
La risposta da supporto WooCommerce era "questa personalizzazione non è coperto dalla nostra politica di sostegno". Ho davvero bisogno di una soluzione a questo. – jwinn