PHP更新后代码被破坏-在WooCommerce中修改“继续结帐”按钮,而没有发货方法

ubbxdtey  于 2022-12-25  发布在  PHP
关注(0)|答案(1)|浏览(143)

我一直在使用下面的代码(从Modify "Proceed to checkout" button without shipping method in WooCommerce),并与代码段插件工作了3个月。但运行PHP和WordPress/WooCommerce更新后,我的购物车页面坏了,如果启用此代码不工作。
下面是代码:

add_action( 'woocommerce_proceed_to_checkout', 'modify_checkout_button_no_shipping', 1 );
function modify_checkout_button_no_shipping() {
    $chosen_shipping_methods = WC()->session->get( 'chosen_shipping_methods' );
    // removes empty values from the array
    $chosen_shipping_methods = array_filter( $chosen_shipping_methods );
    if ( empty( $chosen_shipping_methods ) ) {
        remove_action( 'woocommerce_proceed_to_checkout', 'woocommerce_button_proceed_to_checkout', 20 );
        echo '<a href="'.esc_url(wc_get_checkout_url()).'" class="checkout-button button alt wc-forward">' . __("Informe o seu CEP para prosseguir", "woocommerce") . '</a>';
    }
}

这里是这个错误(根据error_log总结):

PHP Fatal error:  Uncaught TypeError: array_filter(): Argument #1 ($array) must be of type array, null given in /../public_html/wp-content/plugins/code-snippets/php/snippet-ops.php(505) : eval()'d code:5

任何帮助都是感激的。

iqxoj9l9

iqxoj9l91#

也许这会有所帮助:

add_action( 'woocommerce_proceed_to_checkout', 'modify_checkout_button_no_shipping', 1 );
function modify_checkout_button_no_shipping() {
    $chosen_shipping_methods = WC()->session->get( 'chosen_shipping_methods' );
    // removes empty values from the array
    if(is_array($chosen_shipping_methods)){
        $chosen_shipping_methods = array_filter( $chosen_shipping_methods );
    }
    if ( empty( $chosen_shipping_methods ) ) {
        remove_action( 'woocommerce_proceed_to_checkout', 'woocommerce_button_proceed_to_checkout', 20 );
        echo '<a href="'.esc_url(wc_get_checkout_url()).'" class="checkout-button button alt wc-forward">' . __("Informe o seu CEP para prosseguir", "woocommerce") . '</a>';
    }
}

相关问题