woocommerce исключает государственную бесплатную доставку (австралийские штаты)

Я пытаюсь реализовать woocommerces, исключая штаты из фрагмента бесплатной доставки (австралийский сайт), но сталкиваюсь с этой ошибкой:

"Неустранимая ошибка: вызов функции-члена get_shipping_state() для необъекта в /home/bpcsport/public_html/wp-content/plugins/wa-exclude/wa-exclude.php в строке 30"

Мой клиент должен исключить Западную Австралию из соглашения о бесплатной доставке, которое они предлагают через woocommerce. Я получаю ошибку в любом случае, если я помещаю ее в свой файл theme.php или через формат плагина.

Я также попробовал следующий метод безрезультатно.

Как я могу отключить бесплатную доставку для определенных штатов?

Это фрагмент из woocommerce, который находится в плагине

/**
 * Hide ALL shipping options when free shipping is available and customer is NOT in certain states
 * Hide Free Shipping if customer IS in those states
 *
 * Change $excluded_states = array( 'AK','HI','GU','PR' ); to include all the states that DO NOT have free shipping
 */

add_filter( 'woocommerce_available_shipping_methods', 'hide_all_shipping_when_free_is_available' , 10, 1 );

/**
* Hide ALL Shipping option when free shipping is available
*
* @param array $available_methods
*/
function hide_all_shipping_when_free_is_available( $available_methods ) {

  $excluded_states = array( 'WA' );

    if( isset( $available_methods['free_shipping'] ) AND !in_array( $woocommerce->customer->get_shipping_state(), $excluded_states ) ) :

        // Get Free Shipping array into a new array
        $freeshipping = array();
        $freeshipping = $available_methods['free_shipping'];

        // Empty the $available_methods array
        unset( $available_methods );

        // Add Free Shipping back into $avaialble_methods
        $available_methods = array();
        $available_methods[] = $freeshipping;

    endif;

    if( isset( $available_methods['free_shipping'] ) AND in_array( $woocommerce->customer->get_shipping_state(), $excluded_states ) ) {

        // remove free shipping option
        unset( $available_methods['free_shipping'] );

    }

    return $available_methods;
}


?>

1 ответ

Я сделал плагин, который позволяет расширенные пользовательские конфигурации. Хотя он включает только штаты США, вы можете настроить условия страны и почтового индекса.

Я не знаю, соответствует ли это вашим требованиям, но, возможно, стоит проверить: http://wordpress.org/plugins/woocommerce-advanced-free-shipping/

Другие вопросы по тегам