【问题标题】:Woocommerce - How do you Execute ShortCode on Shipping Option Selection in Cart?Woocommerce - 您如何在购物车中选择运输选项时执行 ShortCode?
【发布时间】:2022-01-17 09:53:13
【问题描述】:

我有一个电子商务商店,其购物车页面显示了一个名为“运费报价(给我们发送电子邮件)”的自定义运输选项。但是,我想在我的网站上执行一些简短的代码,该代码将显示一个联系表格,以便用户可以轻松填写​​所需的详细信息以获得运费报价。以下是我的页面目前的样子:

在我的插件中添加代码 sn-p 后,我设法让表单触发,但它会在页面加载后立即触发,然后在 任何 其他选项时消失已选中。

这是我添加的代码 sn-p 以显示上述内容:

    <?php

add_action( 'woocommerce_after_shipping_rate', 'checkout_shipping_additional_field', 20, 2 );
function checkout_shipping_additional_field( $method, $index )
{
    if( $method->get_id() == 'request_shipping_quote' ){
        echo do_shortcode('[ws_form id="1"]');
    }
}

?>

为了重申这个问题,我可以执行简短的代码来显示我的联系表单,但它只会在购物车页面加载后显示,然后在选择任何运输选项时立即消失。我只希望它在选择“运费报价(向我们发送电子邮件)”时执行,并在每次用户再次点击关闭/重新打开时重新显示。

【问题讨论】:

  • 您确定该表单有效吗?我的意思是您是否尝试提交表单或继续结帐?因为在 woo-commerce 中,结帐已经包含在 form 标记中,并且您还添加了我认为具有 form 标记的表单,这不是有效的 HTML,您可以在此处阅读更多信息 - Is it valid to have an HTML form inside another HTML form?
  • 我实际上什至没有尝试提交。它确实在测试后工作/发送,但在单击时.. 它实际上导航到显示 JSON 的随机页面 (mysite.com/wp-json/ws-form/v1/submit)。

标签: php wordpress woocommerce


【解决方案1】:

我建议你使用 woocommerce_cart_totals_after_shipping 钩子。

function show_form_woocommerce_cart_totals_after_shipping(){
    echo do_shortcode('[ws_form id="1"]');
}
add_action( 'woocommerce_cart_totals_after_shipping', 'show_form_woocommerce_cart_totals_after_shipping', 20 );

更多信息,你可以在这里查看WooCommerce Visual Hook Guide: Cart Page

您可以使用 woocommerce 拒绝的updated_shipping_method 触发器。检查here

function show_hide_form_based_on_shipping(){
    ?>
    <script type="text/javascript">
        (function($){

            $( document.body ).on( 'updated_shipping_method', function(){
                
                var shipping_method = $('.shipping_method:checked').val();

                if( shipping_method == 'your-shipping-method-id' ){
                    $('.wsf-form').show();
                }else{
                    $('.wsf-form').hide();
                }
                
            } );

        })(jQuery);
    </script>
    <?php
}
add_action( 'wp_footer', 'show_hide_form_based_on_shipping', 10, 1 );

【讨论】:

  • 如果我只关注你的代码的第一部分,为什么我不能让模态显示?如果我理解正确,我们会创建一个调用我的简码的自定义函数。在我们创建函数之后,woocommerce_cart_totals_after_shipping 的 add_action 和 hook 应该立即在页面加载时触发我们的自定义函数,但这并没有发生。我什么也没看到。
猜你喜欢
  • 2021-11-02
  • 1970-01-01
  • 1970-01-01
  • 2013-03-22
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-05-05
  • 1970-01-01
相关资源
最近更新 更多