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 2 years, 2 months 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)