OLá!
Voce conseguiu resolver?
tenho este erro sempre no mesmo horario…
@renatomiranda
O plugin não foi feito para e não tem suporte para API.
Obrigado.
Opa… Obrigado por responder.
Na verdade acho que não uso API, eu só instalei e ele funciona bem porem fui olhar os logs e vi que tem vários logs “fatal erros” sempre no mesmo horário.
LOG:
2020-12-10T17:53:51+00:00 CRITICAL Uncaught Error: Call to a member function get() on null in /domains//public_html/wp-content/plugins/woo-payment-on-delivery/woo-payment-on-delivery.php:397
Stack trace:
#0 /domains//public_html/wp-includes/class-wp-hook.php(287): add_woo_payment_on_delivery_gateway_class(Array)
#1 /domains//public_html/wp-includes/plugin.php(206): WP_Hook->apply_filters(Array, Array)
#2 /domains//public_html/wp-content/plugins/woocommerce/includes/class-wc-payment-gateways.php(85): apply_filters(‘woocommerce_pay…’, Array)
#3 /domains//public_html/wp-content/plugins/woocommerce/includes/class-wc-payment-gateways.php(70): WC_Payment_Gateways->init()
#4 /domains//public_html/wp-content/plugins/woocommerce/includes/class-wc-payment-gateways.php(43): WC_Payment_Gateways->__construct()
#5 /domains//public_html/wp-content/plugins/woocommerce/includes/class-woocommerce.php(846): WC_Payment_Gateways::instance()
#6 /domains//public_html/wp-content/plugins/woocommerce/includes/class-woocommerce.php(157): WooCommerce->payment_gateways()
#7 /domains//public_html/wp-content/plugins/woocommerce/packages/woocommerce-admin/src/Notes/WC_Admin_Notes_Onboarding_Payments.php(36): WooCommerce->__get(‘payment_gateway…’)
#8 /domains//public_html/wp-content/plugins/woocommerce/packages/woocommerce-admin/src/Notes/NoteTraits.php(74): Automattic\WooCommerce\Admin\Notes\WC_Admin_Notes_Onboarding_Payments::get_note()
#9 /domains//public_html/wp-content/plugins/woocommerce/packages/woocommerce-admin/src/Events.php(88): Automattic\WooCommerce\Admin\Notes\WC_Admin_Notes_Onboarding_Payments::possibly_add_note()
#10 /domains//public_html/wp-includes/class-wp-hook.php(287): Automattic\WooCommerce\Admin\Events->do_wc_admin_daily()
#11 /domains//public_html/wp-includes/class-wp-hook.php(311): WP_Hook->apply_filters(”, Array)
#12 /domains//public_html/wp-includes/plugin.php(544): WP_Hook->do_action(Array)
#13 /domains//public_html/wp-cron.php(138): do_action_ref_array(‘wc_admin_daily’, Array)
#14 {main}
thrown, em /domains//public_html/wp-content/plugins/woo-payment-on-delivery/woo-payment-on-delivery.php, na linha 397
@renatomiranda
Mas isso está deixando seu site fora do AR?
Veja se seus plugins estão atualizado com novas versão e inclusive o WP.
Normalmente isso não deixa o site fora do ar.
Nunca percebi que ficou fora do ar, embora o erro aconteça sempre no mesmo horário.
Decidi pesquisar só porque vi nos logs, mas no site nunca percebi nenhum erro relacionado a este plugin.
Uma coisa é o plugin não ter API, outra é ele dar conflito e interferir no funcionamento da API nativa do WooCommerce.
Com este plugin habilitado, o método de atualizar status do pedido que o colega está tentando usar deixa de funcionar. Nas APIs v2 e v3 é retornado o erro ‘Call to a member function get() on null’ (woo-payment-on-delivery.php:397). A api v1 não retorna o erro, mas também não atualiza o pedido. O plugin de pagamento na entrega não deveria tornar não-funcional a API nativa do WC que já estava funcionando.
@marc2377, boa noite
Achei seu texto um pouco agressivo e mau educado.
Acredito que vc entenda que é um plugin gratuito e dediquei horas, dias e meses nele para ajuda a comunidade WP.
Mas o plugin pode ser alterado por qualquer pessoa. E assim se adequar as suas necessidades.
Obrigado.
Eu havia tido a mesma impressão, com relação ao seu tom na primeira resposta argumentando que seu plugin não tem suporte a API. Em meu comentário, fui igualmente objetivo, mas nenhum julgamento fiz acerca das qualidades do autor. Inclusive agradeço pela sua dedicação em tê-lo desenvolvido e compartilhado com a comunidade.
Agora, falando-se de solução:
No método add_woo_payment_on_delivery_gateway_class (linha 393 do arquivo woo-payment-on-delivery.php, o seguinte código pode ser acrescentado logo no início do método:
if (!isset( WC()->session) )
return;
Ou alternativamente, a linha 395 pode ser substituída por if ( !is_admin() && isset( WC()->session) ) {.
P.S. Uma das coisas que aprendi com desenvolvimento open-source é que, quando seu código quebra funcionalidade existente em outras partes do programa, você introduziu um bug e qualquer resposta que o justifique ao invés de prontamente trabalhar na sua resolução não é aceitável. Aprendi isso com palavras muito mais duras do que as que utilizei.
Encerro minha participação no tópico.
@marc2377, bom dia.
Parceiro se não está feliz com o plugin só não usar.
Não sou seu escravo particular que quando vc quiser eu tenho que fazer algo.
Espero que tenha entendido dessa vez.
Bom dia!
Instalei o plugin e vou verificar se no log aparece erro novamente.
Postarei o resultado.
Poderia me explicar o porque de adicionar esse novo plugin pode resolver este erro?
Vi que ele serve para imprimir os pedidos.
Grato.
Entendi… é preciso dar acesso ao arquivo no drive.