wordpress功能打破了wp-admin

时间:2017-04-14 12:30:50

标签: php wordpress function woocommerce

我在自定义的WooCommerce网站上创建了一个功能。这在前端工作得很好,但是wp-admin会中断。 Wp-admin显示http-500错误。

这是功能:

// Set currency based on visitor country

function geo_client_currency($client_currency) {
        $country = WC()->customer->get_shipping_country();
           switch ($country) {
            case 'GB': return 'GBP'; break;
            default: return 'EUR'; break;
        }

}
add_filter('wcml_client_currency','geo_client_currency');

我已将wp-debug设置为true,它将抛出此消息:

Fatal error: Uncaught Error: Call to a member function get_shipping_country() on null in

所以它必须做一些事情:$ country = WC() - > customer-> get_shipping_country();但我找不到它。 也许有人可以帮助我。

先谢谢。

1 个答案:

答案 0 :(得分:0)

customer属性未设置为后端WC_Customer的实例,因此您无法调用get_shipping_country()方法。

在使用之前检查customer是否为空(默认)。

function geo_client_currency( $client_currency ) {
    if ( WC()->customer ) {
        $country = WC()->customer->get_shipping_country();

        /**
         * Assuming more are going to be added otherwise a switch is overkill.
         * Short example: $client_currency = ( 'GB' === $country ) ? 'GBP' : 'EUR';
         */
        switch ( $country ) {
            case 'GB': 
                $client_currency = 'GBP'; 
                break;

            default: 
                $client_currency = 'EUR';
        }
    }

    return $client_currency;
}
add_filter( 'wcml_client_currency', 'geo_client_currency' );