Forum Replies Created

Viewing 7 replies - 1 through 7 (of 7 total)
  • Thread Starter proteusbr

    (@proteusbr)

    Por que o aviso aparece

    1. Quando o plugin é carregado, woocommerce-parcelas.php instancia o objeto Main imediatamente: wcParcelas(); // executa já no “plugin load”
    2. Em cadeia, o container resolve a classe WcParcelas\App\Common\Settings; no construtor de Settings ainda durante o carregamento do plugin ocorre: __( 'Cor: ', 'wc-parcelas' ); // vários __() parecidos
    3. Como o text-domain ainda não foi carregado e o hook init tampouco ocorreu, o WordPress tenta carregá-lo “just-in-time”, gerando o doing_it_wrong: Translation loading for the wc-parcelas domain was triggered too early…

    Passo-a-passo para corrigir

    Há dois ajustes complementares (ambos simples e retro-compatíveis): Onde O que fazer Por quê woocommerce-parcelas.phpCarregar o arquivo de tradução só no init (ou mais tarde). Garante que o domínio esteja disponível antes de você chamar __(), mas depois do ponto permitido pelo core. app/Common/Settings.phpAdiar as chamadas a __() para o próprio init (ou para qualquer callback que rode depois). Impede que o JIT seja acionado durante o carregamento do plugin. 1. Carregar o texto do plugin na hora certa

    // woocommerce-parcelas/woocommerce-parcelas.php
    add_action( 'init', function () {
        load_plugin_textdomain(
            'wc-parcelas',
            false,
            dirname( WC_PARCELAS_BASENAME ) . '/languages'
        );
    }, 0 );   // prioridade 0 para ser o primeiro no init
    

    2. Mover as traduções do construtor para um callback em init

    // woocommerce-parcelas/app/Common/Settings.php
    class Settings {
    
        public function __construct() {
            add_action( 'admin_menu', [ $this, 'fswp_admin_menu' ], 100 );
            add_action( 'admin_init', [ $this, 'fswp_page_settings' ] );
    
            // ← Antes as traduções estavam aqui: gerava o aviso
            add_action( 'init', [ $this, 'init_style_labels' ] );
        }
    
        /**
         * Só é chamado depois do init, quando o domínio de tradução já está carregado.
         */
        public function init_style_labels() : void {
            $this->style = [
                'color' => [
                    'title'    => __( 'Cor: ', 'wc-parcelas' ),
                    'function' => 'fswp_text_callback',
                    'class'    => 'color-field',
                ],
                'font-weight' => [
                    'title'    => __( 'Peso: ', 'wc-parcelas' ),
                    'function' => 'fswp_select_callback',
                    'options'  => [
                        'inherit' => '-',
                        100 => 100,
                        200 => 200,
                        300 => 300,
                        400 => 400,
                        500 => 500,
                        600 => 600,
                        700 => 700,
                        800 => 800,
                        900 => 900,
                    ],
                ],
                'font-size' => [
                    'title'       => __( 'Tamanho: ', 'wc-parcelas' ),
                    'function'    => 'fswp_text_callback',
                    'placeholder' => __( 'Ex.: 18px ou 1.2em', 'wc-parcelas' ),
                ],
            ];
        }
    

    Observação: caso outra classe faça chamadas a __() no construtor, repita a mesma estratégia:
    – ou mova as strings para um método chamado em init,
    – ou adie a própria criação do objeto (ex.: instantiate-o também via init).

    Resultado esperado

    • O hook init carrega o arquivo de tradução.
    • Os métodos que usam __() agora são executados após init.
    • O aviso “load_textdomain_just_in_time foi chamado incorretamente” desaparece do log.

    Isso resolve o problema sem impactar outras funcionalidades do plugin.

    Thread Starter proteusbr

    (@proteusbr)

    (duplicate)

    • This reply was modified 1 year, 3 months ago by proteusbr.
    Thread Starter proteusbr

    (@proteusbr)

    Thread Starter proteusbr

    (@proteusbr)

    Thread Starter proteusbr

    (@proteusbr)

    in the strip I added the following domains: store.pericialmed.com and pericialmed.com

    Thread Starter proteusbr

    (@proteusbr)

    Just fix the CSS changing the Theme to storefront, but Apple Pay is not working.

Viewing 7 replies - 1 through 7 (of 7 total)