Tôi đang sử dụng phần mở rộng [Tiện ích mở rộng sản phẩm] [1] cho WooCommerce, cho phép các trường tùy chỉnh cho sản phẩm. Điều này tự động hiển thị trên một mẫu sản phẩm duy nhất.WooCommerce: Cách hiển thị các trường từ tiện ích "Tiện ích mở rộng sản phẩm"?
Bằng một số thử nghiệm và lỗi với mẫu sản phẩm đơn lẻ, nó xuất hiện để móc ở đâu đó trong woocommerce_single_product_summary
(single_meta?).
Tôi cần nhận cùng một tập hợp các trường biểu mẫu này để hiển thị trên mẫu archive-product
(danh sách sản phẩm). Trong trường hợp của tôi, đây là một trường cho một yêu cầu thẻ và một cho ngày giao hàng. Cả hai đều cần thiết trước khi sản phẩm có thể được thêm vào giỏ hàng từ kho lưu trữ sản phẩm. Tôi không chắc chắn nếu có một chức năng tôi có thể gọi cho điều này, nếu nó liên quan đến một số mã hóa tiên tiến hơn.
câu trả lời mỗi Pelmered, tôi đã có thể để có được những add-on lĩnh vực xuất hiện với việc thêm này để functions.php:
add_action('woocommerce_after_shop_loop_item_title', array($GLOBALS['Product_Addon_Display'], 'display'), 10);
1ST mưu toan
Sau đó, vấn đề là kho lưu trữ sản phẩm không tạo ra một phần tử biểu mẫu, chỉ là một liên kết neo cho nút thêm vào giỏ hàng. Vì vậy, tôi đã thử đặt thủ công một biểu mẫu. Mã số từ 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'); ?>
Điều này đã làm việc, nhưng loại bỏ sự gửi AJAX và tin nhắn flash. Sau khi nhấp vào nút thêm vào giỏ hàng, trang xuất hiện để làm mới và sau đó có vẻ như không có gì xảy ra. Nhưng khi bạn đi đến một trang khác, nó sẽ hiển thị các tin nhắn (và nhiều có thể ngăn xếp).
2ND mưu toan
Vì vậy, tôi thấy rằng các giỏ nút AJAX gốc (không nằm trong một hình thức) đã sử dụng một chuỗi truy vấn để gửi ID sản phẩm. Vì vậy, bây giờ tôi đang cố gắng để tack vào các thông số bổ sung bằng cách sửa đổi thêm vào giỏ hàng JS. Điều này làm việc. Những gì tôi đã thêm vào làm câu trả lời được chấp nhận.
Câu trả lời từ hỗ trợ WooCommerce là "tùy biến này không được bảo hiểm theo chính sách hỗ trợ của chúng tôi". Thực sự cần một giải pháp cho việc này. – jwinn