Wordpress COD 选项禁用,直到输入城市

Posted

技术标签:

【中文标题】Wordpress COD 选项禁用,直到输入城市【英文标题】:Wordpress COD option disables until the city is entered 【发布时间】:2021-11-19 06:57:23 【问题描述】:

我有一个 WordPress 网站,这里是链接http://figclothingsl.com/

在这种情况下,COD 选项被禁用,如下图所示

在我选择了城市后,它会显示 COD 选项,如下图所示

如何在不选择城市的情况下使其始终可见

【问题讨论】:

【参考方案1】:

请按照以下步骤检查您的 Cod 设置:

    转到:WooCommerce > 设置 > 付款。

    使用启用下的切换选择货到付款。

    选择设置。您将进入货到付款设置。

    配置您的设置: 启用 COD – 启用以使用。禁用即可关闭。

    标题 - 选择结帐时向客户显示的标题

    描述 - 添加显示给客户的信息,如果他们选择货到付款 说明 - 说明如何通过货到付款方式付款

    启用运输方式 - 选择运输方式和费率 将提供货到付款

接受虚拟订单 - 勾选框以允许虚拟产品货到付款

    保存更改

请检查是否有任何其他通过插件或自定义代码添加的设置。如果是,则允许所有国家/地区的鳕鱼。

【讨论】:

它不起作用。我已经做到了。还是一样 您是否检查了其他选项? 是的,我已经检查了所有内容。没有任何作用。仍然只有当我选择了城市时才启用 COD,如果没有,它就被隐藏了【参考方案2】:

你可以试试这个,它经过我的测试并按预期工作。

functions.php

add_filter( 'woocommerce_available_payment_gateways', 'show_hide_cod_payment_method', 20, 1);
function show_hide_cod_payment_method( $gateways )
    if( is_admin() ) 
        return $gateways;

    foreach( $gateways as $gateway_id => $gateway ) 

        if( $gateway_id == 'cod' && ! WC()->session->get( 'is_billing_city' ) )
            unset( $gateways[$gateway_id] );
        
    
    return $gateways;


// The Wordpress Ajax php receiver
add_action( 'wp_ajax_my_billing_city', 'get_ajax_my_billing_city' );
add_action( 'wp_ajax_nopriv_my_billing_city', 'get_ajax_my_billing_city' );
function get_ajax_my_billing_city() 
    if (isset($_POST['billing_city']) && $_POST['billing_city'])
        WC()->session->set('is_billing_city', $_POST['billing_city']);
     else 
        WC()->session->set('is_billing_city', '0');
    
    die();


// The jQuery Ajax request
add_action( 'wp_footer', 'checkout_billing_city_fields_script' );
function checkout_billing_city_fields_script() 
    // Only checkout page
    if( is_checkout() && ! is_wc_endpoint_url() ):

        // Remove "is_billing_city" custom WC session on load
        if( WC()->session->get('is_billing_city') )
            WC()->session->__unset('is_billing_city');
        
        wc_enqueue_js("
            jQuery( function($)
                var default_city = jQuery('#billing_city').val();
                cityChanger(default_city);
            );
            jQuery(document).on('change blur','#billing_city',function() 
                var mycity = jQuery(this).val();
                cityChanger(mycity);
            );
            function cityChanger(selected_city)
                jQuery.ajax(
                    type: 'POST',
                    url: wc_checkout_params.ajax_url,
                    data: 
                        'action': 'my_billing_city',
                        'billing_city': selected_city != '' ? 1 : 0,
                    ,
                    success: function (result) 
                        jQuery('body').trigger('update_checkout');
                    
                );
            
        ");
    endif;
;

现在我们正在使用“change”,“blur”动作,因此如果您真的需要,您可以相应地更改动作“jQuery(document).on('change blur','#billing_city',function()”。 参考答案是:https://***.com/a/69157294/16560548

【讨论】:

它没有配对,不知道为什么 使用 Inspect 检查浏览器上的 js 错误,因为我正在测试它的工作是否完美。 另一件事检查城市输入字段ID,如果不同,则将其替换为“billing_city”。

以上是关于Wordpress COD 选项禁用,直到输入城市的主要内容,如果未能解决你的问题,请参考以下文章

添加一个复选框作为禁用支付网关的 WooCommerce 管理产品选项

按钮将禁用,直到所有输入未被填满 无法正常工作

如何为我的 Wordpress 网站禁用查看源代码和检查元素?

Wordpress解锁主题选项

禁用当前选择,直到在前一个选择中输入了某个值

禁用输入选项卡