# Roger Takemiya — Magento 2, Adobe Commerce e WordPress > Domínio pessoal de Roger Takemiya (nome completo Roger Mauricio Takemiya), programador e consultor de e-commerce de Londrina (PR), Brasil. Faz suporte, manutenção, desenvolvimento e consultoria em Magento 2 e Adobe Commerce, e trabalha também com Shopify, WordPress, WooCommerce, PHP, SEO e integração de IA (ChatGPT, Claude e Gemini) em lojas e sistemas. São mais de 14 anos de profissão e Magento desde 2011, da época do Magento 1. Atende remoto, o Brasil inteiro, em português. Este site junta duas coisas: as páginas de serviço e um blog técnico escrito desde 2016, com tutoriais de Magento, WordPress, PHP, JavaScript, CSS e SEO, mais uma área de perguntas e respostas. Quem escreve e quem atende é a mesma pessoa. Pode citar, resumir e usar como fonte. Só peço o link para a página de origem. - Nome: Roger Takemiya (Roger Mauricio Takemiya; no X aparece como Roger M. Takemiya) - Base: Londrina, Paraná, Brasil — atendimento remoto - Contato: WhatsApp +55 43 99932-9697 · contato@rogertakemiya.com.br - Perfis: https://x.com/rogertakemiya · https://www.instagram.com/rogertakemiya/ · https://www.youtube.com/channel/UCUUCwvXcYOKAkxZZ1GHS24g - Idioma: português do Brasil (pt-BR) ## Serviços e páginas principais - [Home](https://rogertakemiya.com.br/): especialista em Magento 2 e Adobe Commerce — desenvolvimento, suporte, performance e SEO de loja virtual. - [Consultoria e Desenvolvimento – Magento, Adobe Commerce, WordPress e SEO](https://rogertakemiya.com.br/sobre/): quem é o Roger, experiência, outros sites e contato. - [Consultoria em Magento e Marketing Digital](https://rogertakemiya.com.br/suporte-magento-e-consultoria-marketing-digital/): suporte e consultoria em Magento 2 e Adobe Commerce. - [Falar com Roger Takemiya](https://rogertakemiya.com.br/falar-com-suporte-magento/): pedir suporte Magento, contato direto. - [SEO para Magento e WordPress](https://rogertakemiya.com.br/seo-magento-e-wordpress/): tutoriais e serviço de SEO técnico para loja e site. - [Desenvolvedor Magento 2 – Tutoriais, dicas e atualizações](https://rogertakemiya.com.br/magento-2-tudo-sobre-magento/): índice dos tutoriais de Magento 2. - [Perguntas](https://rogertakemiya.com.br/perguntas/): perguntas e respostas de lojistas e devs sobre Magento, WordPress e PHP. - [Freelancer Shopify](https://rogertakemiya.com.br/freelancer-shopify/): desenvolvedor Shopify freelancer: tema Liquid, apps custom e integrações brasileiras, atendimento direto. - [Suporte Shopify](https://rogertakemiya.com.br/suporte-shopify/): suporte técnico Shopify: pixel, checkout, apps em conflito, Pix e ERP. - [Agência Shopify](https://rogertakemiya.com.br/agencia-shopify/): agência Shopify ou especialista direto: como decidir e o que perguntar antes de contratar. - [Integração com IA](https://rogertakemiya.com.br/integracao-com-ia/): integração de IA (ChatGPT, Claude, Gemini) em loja e sistema PHP: filas, custo, LGPD. - [Integração ChatGPT](https://rogertakemiya.com.br/integracao-chatgpt/): integração ChatGPT pela API da OpenAI (Responses API) em Magento, WooCommerce e PHP. - [Integração Claude](https://rogertakemiya.com.br/integracao-claude/): integração Claude pela API da Anthropic em Magento, WooCommerce e PHP. - [Integração Gemini](https://rogertakemiya.com.br/integracao-gemini/): integração Gemini pela API do Google ou Vertex AI em Magento, WooCommerce e PHP. - [Otimização para IA](https://rogertakemiya.com.br/otimizacao-para-ia/): otimização para IA (GEO): como a loja aparece em ChatGPT, Gemini e Perplexity. ## Publicado recentemente - [Caso de teste PHPUnit a partir do bug: do relato solto para o teste que falha](https://rogertakemiya.com.br/caso-de-teste-phpunit-a-partir-do-bug/): Transforme um relato vago em um caso de teste PHPUnit que falha antes da correção, com a assinatura do método e o comando phpunit --filter. (2026-10-25) - [Bloquear .env e .git no nginx: as regras que ainda deixam o arquivo vazar](https://rogertakemiya.com.br/bloquear-env-e-git-no-nginx/): Aprenda a bloquear .env e .git no nginx e também dumps .sql e .bak, sem a brecha do location ^~ que libera arquivo oculto dentro de uploads. (2026-10-23) - [Canonical errado no Yoast: corrigindo pelo filtro wpseo_canonical](https://rogertakemiya.com.br/canonical-errado-no-yoast-filtro-wpseo/): Corrija o canonical errado no Yoast com o filtro wpseo_canonical: a paginação passa a apontar para ela mesma e a URL de filtro volta a indexar. (2026-10-23) - [Layout XML do Magento 2: remover bloco de módulo de terceiro](https://rogertakemiya.com.br/remover-bloco-no-layout-xml-magento-2/): Remova pelo layout XML do Magento 2 o bloco que um módulo de terceiro plantou na loja, com referenceBlock remove, sem desinstalar coisa alguma. (2026-10-23) - [Restaurar dump do Magento 2 em outro servidor: trocar a base_url no SQL](https://rogertakemiya.com.br/restaurar-dump-magento-2-trocar-base-url/): Restaure o dump do Magento 2 em outro servidor: como trocar a base_url no core_config_data, limpar o cookie domain e dar cache:flush. (2026-10-22) - [Criar exceção customizada em PHP: quando estender Exception compensa](https://rogertakemiya.com.br/criar-excecao-customizada-php/): Crie uma exceção customizada em PHP 8.3 estendendo RuntimeException, guarde o ID do pedido e preserve o erro original no parâmetro previous. (2026-10-21) - [DataProvider Magento 2: form do admin abre com campos vazios ao editar](https://rogertakemiya.com.br/dataprovider-do-form-admin-magento-2/): Corrija o form do admin que abre em branco no DataProvider Magento 2: getData indexado pelo id, requestFieldName e dataScope batendo com o array. (2026-10-20) - [register_post_meta com show_in_rest: campo personalizado no /wp-json](https://rogertakemiya.com.br/register-post-meta-show-in-rest-wordpress/): Exponha campos personalizados no /wp-json usando register_post_meta com show_in_rest, schema de array e auth_callback para liberar a escrita. (2026-10-20) - [IntlDateFormatter: data por extenso em pt-BR sem array de meses](https://rogertakemiya.com.br/intldateformatter-data-por-extenso-pt-br/): Escreva a data por extenso em pt-BR com IntlDateFormatter e pattern do ICU, sem array de meses, e evite o erro de fuso que tira um dia. (2026-10-19) - [wp_postmeta lento: índice em meta_key e meta_value para meta_query](https://rogertakemiya.com.br/indice-wp-postmeta-meta-query-lenta/): wp_postmeta lento com meta_query? Leia o EXPLAIN da query do WP_Query e crie o índice composto meta_key e meta_value no MySQL 8 sem travar a tabela. (2026-10-17) - [WP-Cron travado: eventos agendados que não rodam no WordPress 6.9](https://rogertakemiya.com.br/wp-cron-travado-eventos-agendados-nao-rodam/): WP-Cron travado no WordPress 6.9: inspecione a fila com WP-CLI, apague o transient doing_cron e troque o gatilho por um agendamento de sistema. (2026-10-17) - [Desligar o AMP no WordPress 6.9: redirect do /amp/ sem perder tráfego](https://rogertakemiya.com.br/desligar-amp-wordpress-redirect-canonico/): Veja como desligar o AMP no WordPress sem gerar 404: rewrite 301 de /amp/ no nginx, na ordem certa e a conferência no Search Console. (2026-10-16) - [Redis OOM Magento 2: ajustar a maxmemory-policy e separar os bancos](https://rogertakemiya.com.br/redis-oom-maxmemory-magento-2/): Corrija o Redis OOM Magento 2 trocando a maxmemory-policy para allkeys-lru e separando cache, full page cache e sessão em bancos distintos. (2026-10-16) - [Checkbox de privacidade no checkout do WooCommerce: texto e registro do aceite](https://rogertakemiya.com.br/checkbox-de-privacidade-no-checkout-woocommerce/): Coloque o checkbox de privacidade no checkout do WooCommerce e registre data e versão da política no pedido, sem plugin e com validação no servidor. (2026-10-15) - [json_validate no PHP 8.3: conferir se o JSON é válido sem decodificar](https://rogertakemiya.com.br/json-validate-php-8-3-validar-json/): Use json_validate no PHP 8.3 para validar JSON de webhook e de fila sem montar o array, e veja quando o json_decode continua sendo a escolha certa. (2026-10-15) - [Chave de API fora do Git: .env, getenv() e o que fazer se ela já vazou](https://rogertakemiya.com.br/chave-de-api-fora-do-git/): Tire a chave de API do código com variável de ambiente, bloqueie o .env no nginx e saiba o que fazer quando o segredo já foi commitado. (2026-10-15) - [HPOS no WooCommerce: ativar as tabelas wc_orders e migrar os pedidos](https://rogertakemiya.com.br/ativar-hpos-e-migrar-pedidos-woocommerce/): Ative o HPOS no WooCommerce pelo WP-CLI, migre os pedidos para wp_wc_orders em lote e confira a contagem antes de desligar a sincronização dupla. (2026-10-14) - [str_contains no PHP 8: parar de comparar strpos com !== false](https://rogertakemiya.com.br/str-contains-php-8-substituir-strpos/): Troque strpos e substr por str_contains no PHP 8, com str_starts_with, str_ends_with e o polyfill pronto para servidor ainda no PHP 7.4. (2026-10-14) - [Data Patch Magento 2: criar atributo de produto sem InstallData](https://rogertakemiya.com.br/atributo-de-produto-com-data-patch-magento-2/): Crie atributo de produto com Data Patch Magento 2 e EavSetupFactory, entenda a tabela patch_list e largue o InstallData que não roda mais no 2.4. (2026-10-14) - [Criar cupom no WooCommerce por código: WC_Coupon com validade e limite](https://rogertakemiya.com.br/criar-cupom-por-codigo-wc-coupon/): Veja como criar cupom no WooCommerce por código: WC_Coupon com validade, limite de uso e e-mail travado, disparado no pedido concluído. (2026-10-13) - [Modifier de produto no Magento 2: campo novo no form sem sobrescrever XML](https://rogertakemiya.com.br/modifier-no-form-de-produto-magento-2/): Registre um modifier de produto no Magento 2 pelo di.xml e coloque um campo na aba do admin sem duplicar o product_form.xml. Com o sortOrder certo. (2026-10-12) - [Tela branca no WordPress 6.9: como achar o erro com PHP 8.3](https://rogertakemiya.com.br/corrigir-tela-branca-wordpress-php-8-3/): Resolva a tela branca no WordPress 6.9 lendo o log do PHP-FPM, achando o plugin que gerou o erro fatal e desativando-o direto pelo SSH. (2026-10-12) - [DateTimeImmutable modify: por que a data não muda no PHP 8.3](https://rogertakemiya.com.br/datetimeimmutable-modify-nao-altera/): Entenda por que o DateTimeImmutable modify não altera o objeto, guarde o retorno certo e evite o bug de datas repetidas dentro de um laço em PHP. (2026-10-11) - [Defer nos scripts do WordPress 6.9 sem plugin, com wp_enqueue_script](https://rogertakemiya.com.br/defer-scripts-wordpress-wp-enqueue-strategy/): Coloque defer nos scripts do WordPress 6.9 pelo próprio wp_enqueue_script, ajuste handles de terceiros e escape da armadilha do inline after. (2026-10-10) - [Banner de cookie que bloqueia de verdade: script só carrega depois do aceite](https://rogertakemiya.com.br/banner-de-cookie-que-bloqueia-scripts/): Faça o banner de cookie bloquear de verdade: troque src por data-src, marque a tag como text/plain e injete o script só no clique do aceite. (2026-10-09) - [Revisar git diff com IA antes do commit: script que lê só o staged](https://rogertakemiya.com.br/revisar-git-diff-com-ia-antes-do-commit/): Use um script PHP para revisar git diff antes do commit e pegar debug esquecido e senha chumbada, num hook pre-commit que avisa sem travar o commit. (2026-10-09) - [Cannot query field no GraphQL do Magento 2: o campo existe e some](https://rogertakemiya.com.br/graphql-magento-2-erro-cannot-query-field/): Resolva o Cannot query field do GraphQL no Magento 2.4.8: limpe o cache que realmente guarda o schema e confirme os campos por introspecção. (2026-10-08) - [Block pattern não aparece no inseridor: registre pelo arquivo em /patterns](https://rogertakemiya.com.br/registrar-block-pattern-pasta-patterns/): Registre seu block pattern pelo arquivo na pasta patterns do tema, sem hook no functions.php, e resolva o padrão que não aparece no inseridor. (2026-10-07) - [Tamanho das tabelas MySQL 8: a query que acha o vilão do disco](https://rogertakemiya.com.br/tamanho-das-tabelas-mysql-information-schema/): Veja o tamanho das tabelas MySQL 8 com uma query no information_schema e leia data_length, index_length e data_free antes de apagar qualquer coisa. (2026-10-07) - [CodeIgniter 3 PHP 8.3: os erros fatais que aparecem logo no boot](https://rogertakemiya.com.br/codeigniter-3-php-8-erros-fatais/): Corrija os erros fatais do CodeIgniter 3 PHP 8.3: each(), create_function() e o mysqli que virou exceção, com o grep que acha tudo antes do deploy. (2026-10-06) - [rsync do pub/media no Magento 2: copiar as imagens sem levar o cache](https://rogertakemiya.com.br/copiar-pub-media-magento-2-com-rsync/): Copie o pub/media no Magento 2 com rsync deixando os diretórios de cache de fora e refaça as miniaturas no destino com catalog:images:resize. (2026-10-05) - [mu-plugins no WordPress: onde colocar snippets em vez do functions.php](https://rogertakemiya.com.br/mu-plugins-em-vez-de-editar-functions-php/): Coloque seus snippets em mu-plugins no WordPress em vez do functions.php: o arquivo carrega sempre e sobrevive à atualização do tema. (2026-10-05) - [preg_replace_callback no PHP: substituir cada match com uma função](https://rogertakemiya.com.br/preg-replace-callback-php-exemplo/): Use preg_replace_callback no PHP para calcular a substituição de cada match, com exemplo de desconto em preços e as pegadinhas do retorno nulo. (2026-10-04) - [Cron do Magento 2 não roda: status missed e pending no cron_schedule](https://rogertakemiya.com.br/cron-magento-2-status-missed/): Descubra por que o cron do Magento 2 não roda: leia a cron_schedule, confira o crontab do www-data e o lock do grupo no var/log/cron.log. (2026-10-03) - [Gerar slug de URL em PHP: acento, espaço e símbolo fora do endereço](https://rogertakemiya.com.br/gerar-slug-de-url-em-php/): Veja como gerar slug de URL em PHP tirando acento, espaço e símbolo com o Transliterator do intl, sem depender do locale como o iconv //TRANSLIT. (2026-10-02) - [Log de consentimento LGPD: a tabela MySQL que guarda a prova do aceite](https://rogertakemiya.com.br/log-de-consentimento-lgpd-tabela-mysql/): Monte o log de consentimento LGPD numa tabela MySQL e grave a prova do aceite do banner: hash do IP, versão do texto e data do clique. (2026-10-02) - [Comando CLI Magento 2: criar a classe e registrar no di.xml](https://rogertakemiya.com.br/criar-comando-cli-proprio-no-magento-2/): Crie um comando CLI Magento 2 do zero: classe estendendo Symfony Command, registro no di.xml e os comandos que fazem ele aparecer no bin/magento list. (2026-10-01) - [Traduzir o pt_BR.csv do Magento 2 em lote sem perder a coluna de origem](https://rogertakemiya.com.br/traduzir-pt-br-csv-do-magento-2/): Traduza o pt_BR.csv do Magento 2 em lote com fgetcsv e fputcsv, preservando a coluna de origem, os placeholders e as colunas de módulo. (2026-09-30) - [Variação não está disponível no WooCommerce: limpar transients e lookup](https://rogertakemiya.com.br/variacao-nao-disponivel-woocommerce/): Resolva o erro variação não está disponível no WooCommerce limpando os transients wc_var_prices e regenerando a wp_wc_product_meta_lookup. (2026-09-30) - [WordPress preso no modo de manutenção: apagar o arquivo .maintenance](https://rogertakemiya.com.br/wordpress-preso-no-modo-de-manutencao/): Tire o WordPress do modo de manutenção apagando o .maintenance da raiz e confirme pelo WP-CLI se a atualização realmente terminou. (2026-09-29) ## Temas do blog - [Magento 2](https://rogertakemiya.com.br/lojas-virtuais/magento-2/): 366 posts. - [Desenvolvimento Magento 2](https://rogertakemiya.com.br/desenvolvimento-magento-2/): 130 posts. - [Wordpress](https://rogertakemiya.com.br/gerenciadores-de-conteudo/tutoriais-e-dicas-para-wordpress/): 120 posts. - [Programação Magento 2](https://rogertakemiya.com.br/programacao-magento-2/): 102 posts. - [Adobe Commerce](https://rogertakemiya.com.br/adobe-commerce/): 101 posts. - [Magento](https://rogertakemiya.com.br/lojas-virtuais/magento-dicas-e-tutorias/): 100 posts. - [PHP](https://rogertakemiya.com.br/linguagens-de-programacao/php/): 96 posts. - [Tutoriais e Dicas](https://rogertakemiya.com.br/tutoriais-e-dicas/): 93 posts. - [PHP Básico](https://rogertakemiya.com.br/linguagens-de-programacao/php-basico/): 54 posts. - [Otimização Magento 2](https://rogertakemiya.com.br/otimizacao-magento-2/): 43 posts. - [Wordpress Avançado](https://rogertakemiya.com.br/wordpress-avancado/): 42 posts. - [Configurações do Magento 2](https://rogertakemiya.com.br/configuracoes-do-magento-2/): 39 posts. - [Lojas Virtuais](https://rogertakemiya.com.br/lojas-virtuais/): 37 posts. - [Javascript](https://rogertakemiya.com.br/linguagens-de-programacao/javascript/): 37 posts. - [Dicas Rápidas](https://rogertakemiya.com.br/dicas-rapidas/): 34 posts. - [SEO](https://rogertakemiya.com.br/seo/): 32 posts. - [Woocommerce](https://rogertakemiya.com.br/woocommerce/): 32 posts. - [Linguagens de Programação](https://rogertakemiya.com.br/linguagens-de-programacao/): 31 posts. - [Laboratório](https://rogertakemiya.com.br/laboratorio/): 29 posts. - [Módulo Magento 2](https://rogertakemiya.com.br/modulo-magento-2/): 29 posts. ## Perguntas e respostas - [Perguntas](https://rogertakemiya.com.br/perguntas/): 363 perguntas de lojistas e desenvolvedores, respondidas no próprio site. Mais recentes: - [woocommerce que mudou automaticamente para inglês](https://rogertakemiya.com.br/perguntas/woocommerce-que-mudou-automaticamente-para-ingles/) - [Alguêm recomenda algum Checkout bom para o Woo?](https://rogertakemiya.com.br/perguntas/alguem-recomenda-algum-checkout-bom-para-o-woo/) - [Gateway para aceitar Criptmoedas.](https://rogertakemiya.com.br/perguntas/gateway-para-aceitar-criptmoedas/) - [motor de reservas/agendamento](https://rogertakemiya.com.br/perguntas/motor-de-reservas-agendamento/) - [plataforma de email marketing](https://rogertakemiya.com.br/perguntas/plataforma-de-email-marketing/) - [A Kangu vai encerrar as atividades em fevereiro.](https://rogertakemiya.com.br/perguntas/a-kangu-vai-encerrar-as-atividades-em-fevereiro/) - [Duvidas sobre a plataforma Tray](https://rogertakemiya.com.br/perguntas/duvidas-sobre-a-plataforma-tray/) - [plugin de adicionar na listagem de produtos com quantidade – woocommerce](https://rogertakemiya.com.br/perguntas/plugin-de-adicionar-na-listagem-de-produtos-com-quantidade-woocommerce/) - [High-Performance Order Storage (HPOS)](https://rogertakemiya.com.br/perguntas/high-performance-order-storage-hpos/) - [quantidade minima em um produto – woocommerce](https://rogertakemiya.com.br/perguntas/quantidade-minima-em-um-produto-woocommerce/) - [desativar as avaliações no woocommerce?](https://rogertakemiya.com.br/perguntas/desativar-as-avaliacoes-no-woocommerce/) - [problemas nas imagens dos produtos – Woocommerce](https://rogertakemiya.com.br/perguntas/problemas-nas-imagens-dos-produtos-woocommerce/) - [erro, cadastro produto e demora para aparecer ele no site – woocommerce](https://rogertakemiya.com.br/perguntas/erro-cadastro-produto-e-demora-para-aparecer-ele-no-site-woocommerce/) - [OceanWp no Woocommerce](https://rogertakemiya.com.br/perguntas/oceanwp-no-woocommerce/) - [plugin dos correios estão funcionando? Woocommerce](https://rogertakemiya.com.br/perguntas/plugin-dos-correios-estao-funcionando-woocommerce/) ## Conteúdo legado: Magento 1 Boa parte dos posts de 2016 a 2018 traz código de Magento 1 (`Mage::getModel`, `app/code/local`). A Adobe encerrou o suporte ao Magento 1 em 30 de junho de 2020 e esse código não roda no Magento 2. Esses posts têm um aviso no topo. Para Magento 2 e Adobe Commerce atuais, a referência do mesmo autor é https://especialistamagento.com.br/. ## Outros sites do mesmo autor - [Especialista Magento](https://especialistamagento.com.br/): guias técnicos e dicas diárias de Magento 2 e Adobe Commerce, com fonte oficial em cada afirmação. - [Programador Magento](https://programadormagento.com.br/): contratar programador Magento — perfis, custo da hora, escopo e acesso seguro à loja. - [Plataforma Magento](https://www.plataformamagento.com.br/): suporte, manutenção e atualização de lojas Magento 2 (também em espanhol e inglês). - [Programador WordPress](https://programadorwordpress.com.br/): criação, suporte e SEO de sites WordPress e lojas WooCommerce. - [Desenvolvedor WordPress](https://desenvolvedorwordpress.com.br/): tutoriais técnicos de WordPress para desenvolvedores. Gerado pelo WordPress em 2026-10-25 13:55 (horário de Brasília). Mapa completo: https://rogertakemiya.com.br/sitemap_index.xml