WooCommerce: Wie werden Felder aus der Erweiterung "Produkt-Add-Ons" angezeigt?

Ich verwende die Erweiterung [Product Add-ons] [1] für WooCommerce, die benutzerdefinierte Felder für Produkte zulässt. Dies wird automatisch in der einzelnen Produktvorlage angezeigt.

Durch ein wenig Ausprobieren mit der einzelnen Produktvorlage scheint sie sich irgendwo in @ einzuhakewoocommerce_single_product_summary (single_meta?).

Ich muss die gleichen Formularfelder abrufen, um sie auf dem @ anzuzeigearchive-product template (die Liste der Produkte). In meinem Fall ist dies ein Feld für eine Kartenanfrage und eines für das Lieferdatum. Beides wird benötigt, bevor das Produkt aus dem Produktarchiv in den Warenkorb gelegt werden kann. Ich bin mir nicht sicher, ob es eine Funktion gibt, die ich dafür aufrufen kann, wenn es sich um etwas fortgeschritteneres Codieren handelt.

Per Pelmereds Antwort: Ich konnte die Add-On-Felder anzeigen lassen, indem ich diese zu functions.php hinzufügte:

add_action( 'woocommerce_after_shop_loop_item_title', array($GLOBALS['Product_Addon_Display'], 'display'), 10);

1ST ATTEMPT

Dann bestand das Problem darin, dass das Produktarchiv kein Formularelement erstellte, sondern nur einen Ankerlink für die Schaltfläche "Zum Warenkorb hinzufügen". Also habe ich versucht, ein Formular manuell auszufüllen. Code voncontent-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' ); ?>

Dies hat funktioniert, aber die AJAX-Übermittlung und Flash-Nachrichten sind durcheinander. Nachdem Sie auf die Schaltfläche "In den Warenkorb" geklickt haben, wird die Seite scheinbar aktualisiert, und dann scheint nichts passiert zu sein. Wenn Sie jedoch zu einer anderen Seite wechseln, werden die Nachrichten angezeigt (und mehrere können gestapelt werden).

2ND ATTEMPT

So sah ich, dass die ursprüngliche AJAX-Warenkorb-Schaltfläche (nicht in einem Formular) eine Abfragezeichenfolge zum Senden der Produkt-ID verwendete. Ich versuche nun, zusätzliche Parameter zu ändern, indem ich das Add-to-Cart-JS ändere. Das hat funktioniert. Was ich als akzeptierte Antwort hinzugefügt habe.

Antworten auf die Frage(2)

Ihre Antwort auf die Frage