Пользовательский плагин WooCommerce: ошибка в экземпляре объекта WC_Customer - PullRequest
1 голос
/ 28 мая 2020

Я создал плагин, и у меня возникла следующая проблема: панель управления WooCommerce (на стороне администратора) не загружает данные. Зависает и выходит из строя. Я отследил код проблемы:

Проблема в

if ( is_admin() ) { 
    //removed   
} else if ( !$this->is_login_page() && !wp_doing_ajax() ) {

    $public = new Public();
}

Это побочный код publi c, который вызывает проблему! и ни is_admin, ни wp_doing_ ajax не предотвращают этого.

На стороне publi c я звоню

add_action( 'init', array('Dynamic_Rules', 'dynamic_rule_tax_exemption') );

Внутри функции освобождения от налогов у меня есть этот код в частности, что вызывает проблему:

$woocommerce = WC();

$user_country = $woocommerce->customer->get_billing_country();

$woocommerce->customer->set_is_vat_exempt(true);

Поэтому я могу только предполагать, что происходит, возможно, W C () каким-то образом отправляет все в бесконечный l oop, поэтому Dashboard не загружает данные. Почему is_admin () и wp_doing_ ajax () не предотвращают этого, я не знаю.

Возможно, я неправильно вызываю эту функцию в init, но где еще я мог бы ее вызвать ?

Любая помощь приветствуется

1 Ответ

1 голос
/ 28 мая 2020

Трудно определить, в чем может заключаться ваша проблема ... Обратите внимание, что "ваш вопрос должен быть обновлен, чтобы включить желаемое поведение, конкретную c проблему или ошибку, и кратчайший код, необходимый для воспроизведения проблема. "

Вместо этого вы можете попробовать:

$customer = WC()->customer;

if( ! is_a( $customer, 'WC_Customer' ) {
    global $current_user;

    if( $current_user > 0 ) { 
        $customer = new WC_Customer( $current_user->ID );
    }
}

if( is_a( $customer, 'WC_Customer' ) {
    $billing_country = $customer->get_billing_country();

    if( ! $customer->is_vat_exempt() ) {
        $customer->set_is_vat_exempt( true );
    }   
} else {
    // Some code to throw an error or debug trace
}

Надеюсь, это решит вашу проблему. Если нет, вам нужно каким-то образом передать User ID в свой код.

Может быть полезно: Отладка WooCommerce PHP с Javascript console.log не работает

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...