Forum Replies Created

Viewing 4 replies - 1 through 4 (of 4 total)
  • Update:

    Anteriormente n?o conseguia aceder aos blocos porque o modo de edi??o do wordpress estava por omiss?o como “Editor clássico”. Por essa raz?o, n?o conseguia ver e editar os blocos na página de edi??o do checkout. Para poder editar tive que alterar a seguinte op??o:

    Op??es -> Escrita -> Editor por omiss?o para todos os utilizadores: Editor de blocos

    Desta forma já aparece o campo NIF na página de checkout.

    • This reply was modified 8 months, 3 weeks ago by webthings99.

    Boa tarde, estou a ter o mesmo problema. A vers?o do woocommerce é 8.6.1 e do plugin a 6.2.

    Mas n?o percebi como verificar isto: “Por favor verifique, ao editar a página de checkout se o bloco do NIF Português aparece como child block do bloco de checkout. Se n?o, adicione-o.”

    Como posso fazer para adicionar o bloco?

    Obrigado.

    Thread Starter webthings99

    (@webthings99)

    Mais uma vez agrade?o-lhe pela resposta, ainda para mais n?o sendo algo diretamente relacionado com plugin.

    Em rela??o à inativa??o do email nas configura??es do Woocommerce, considerei n?o ser a solu??o ideal para o meu caso, porque o que eu pretendo realmente é ter um estado intermédio entre o estado “Aguarda a confirma??o de pagamento” e o estado “Em processamento”, ou seja continuarei a precisar do estado de “Em processamento” depois da encomeda passar pelo estado “Em análise”, e como tal precisarei também do email associado.

    Contudo, para resolver este problema acabei por utilizar o filtro que tinha sugerido na sua primeira resposta, com esse filtro já n?o envia o mail de “Em processamento” quando o estado é “Em análise”. No entanto depois deparei-me com outro problema que era que ao mudar o estado manualmente de “Em análise” para “Em processamento” o woocommerce n?o enviava o email de “Em processamento” e acabei por adicionar outro Hook para resolver este problema. Deixo aqui a solu??o para possiveis interessados:

    // Adiciona um filtro para modificar o status do pedido após o pagamento
    add_filter('woocommerce_payment_complete_order_status', 'custom_order_status_after_payment', 10, 2);
    
    // Fun??o para modificar o status do pedido após o pagamento
    function custom_order_status_after_payment($order_status, $order_id)
    {
        // Obtém o objeto da encomenda
        $order = wc_get_order($order_id);
    
        // Verifica se a encomenda n?o está no estado 'Em análise'
        if ($order->get_status() !== 'em-analise') {
            // Retorna o status 'Em análise'
            return 'em-analise';
        }
    
        // Se já estiver no status em 'Em análise', mantém o status atual
        return $order_status;
    }
    
    // Adiciona um Hook para detetar quando o status do pedido é alterado manualmente
    add_action('woocommerce_order_status_changed', 'send_processing_email_on_manual_update', 10, 4);
    
    // Fun??o para enviar e-mail quando o status do pedido é manualmente alterado para 'Em processamento'
    function send_processing_email_on_manual_update($order_id, $old_status, $new_status, $order)
    {
        // Verifica se o status está a mudar para 'Em processamento' e se é uma atualiza??o manual
        if ($new_status === 'processing' && !empty($_POST['_wpnonce'])) {
            // Envia o e-mail de 'Em processamento'
            WC()->mailer()->emails['WC_Email_Customer_Processing_Order']->trigger($order_id);
        }
    }
    
    Thread Starter webthings99

    (@webthings99)

    Obrigado pela resposta rápida e pelo esclarecimento.

    Após uma pesquisa mais aprofundada encontrei este filtro que também faz aquilo que necessitava, no entanto envia na mesma o email de “Em processamento”, algo que ainda estou a tentar solucionar.

    Deixo aqui o filtro para o caso de ser útil a alguém no futuro.

    /**
     * Alterar estado da encomenda para 'Em análise' após Pagamento
     */
    add_action('woocommerce_payment_complete', 'custom_order_status_after_payment');
    
    function custom_order_status_after_payment($order_id)
    {
        // Obtém o objeto da encomenda
        $order = wc_get_order($order_id);
    
        // Verifica se a encomenda já n?o está no estado 'Em análise'
        if ($order->get_status() !== 'em-analise') {
            // Atualiza o status para 'Em análise'
            $order->update_status('em-analise');
        }
    }
Viewing 4 replies - 1 through 4 (of 4 total)