已解决
我的 WooCommerce 项目上有一些代码问题。我希望在产品详情页中自动添加一条链接,指向相关的演示产品(Demo Product),用于通知客户可以购买演示版。
我使用了 woocommerce_after_add_to_cart_button
这个 action hook,在简单产品上显示正常,但在可变产品页面上,链接虽然显示了,但变体无法添加到购物车。
以下是我最初使用的代码:
add_action( 'woocommerce_after_add_to_cart_button', 'find_rf_link_products_function2' );
function find_rf_link_products_function2(){
global $product;
$product_rf = $product->get_sku() . "RF";
$product_id = wc_get_product_id_by_sku( $product_rf );
$linktorf = get_permalink($product_id);
if( $product_id ) {
$product = wc_get_product( $product_id );
$amountRF = $product->get_stock_quantity();
}
if ( $amountRF > 0 ) {
echo "<span class='box'><a href='" . esc_url($linktorf) . "'>EX-DEMO AVAILABLE</a></span>";
}
}
该代码的问题在于,在可变产品页面上,变体无法添加到购物车。
错误的根本原因在于,您在代码中对可变产品没有进行适当的处理。具体来说,当添加自定义链接时,代码未考虑到动态变化的可变产品选项,导致 WooCommerce 无法正确识别并处理变体的选择状态,进而阻止了变体被添加到购物车。
此外,您在操作
woocommerce_after_add_to_cart_button
钩子时,并没有考虑到可能存在的异步加载变体数据,这使得您的代码在动态切换变体时失效。解决方法:
为了解决这个问题,我们需要对代码进行一些调整,尤其是在可变产品上动态处理相关产品链接和变体选择。
1. 显示相关演示产品链接(对于可变产品使用隐藏链接):
2. 为每个变体添加演示产品链接:
3. 使用 JavaScript 动态更新已选择变体的演示链接:
总结:
问题原因:在处理可变产品时,缺乏动态更新演示链接的机制,导致变体无法正确加载。
解决方案:通过
woocommerce_available_variation
钩子来为每个变体动态添加演示产品链接,并通过 JavaScript 动态更新演示链接。通过这些修改,您应该能够在 WooCommerce 中正确地为可变产品添加演示链接,并且确保在选择不同变体时,演示链接能正确显示,变体也能正常添加到购物车中。
@超哥 非常感谢,已经解决了