Como ativar o relatório de erros do PHP no MAMP?

Eu sou fã do Mac e uso o MAMP não só para desenvolver sítios WordPress, mas também outros projetos em PHP. Durante este trabalho, é muito útil ver os erros direto na tela, sem ter que lançar mão de outros recursos.

No entanto, por padrão, essa opção é desativada no MAMP. No MAMP versão PRO, é bem fácil trocar, é só ir nas configurações, em Error Handling (Manuseio dos Erros) e na seção “To” marque a opção “Display”.

Ajustes para a visualização de erros no MAMP PRO

Se tu usas a versão básica como eu, é um pouco mais chato, mas não é tão complicado, como vemos abaixo:

1. Abra a pasta do MAMP, que está em /Applications/MAMP/. Dentro dela, teremos a pasta de “configurações” (/conf/) com as diversas versões do PHP que estão instaladas em tua máquina.

2. Escolhe a versão que estás usando. No meu caso, eu estou usando a versão PHP 7.3, então o caminho completo da pasta é esse: /Applications/MAMP/conf/php7.3.8. Abre o documento php.ini que está dentro dela.

3. Procura a linha onde se está o parâmetro display_errors e muda de “Off” para “On”.

4. Se precisares mudar os tipos de erros o que tu queres que sejam exibidos, usa o parâmetro error_reporting para isso. Eu recomendo que tu deixes a opção E_ALL que é justamente todos os erros.

5. Para o servidor Apache e reinicia novamente para que os ajustes feitos tomem efeito.

FEITO! Agora quando executares um script PHP, serão exibidos os níveis de erros: errors, warnings e notices.

Como resolver o erro “Falha ao atualizar. A resposta não é um JSON válido.” no WordPress

Então tu estás reinstalando um sítio WordPress ou então foste atualizar uma página qualquer e pá! Vem este erro exótico “A resposta não é um JSON válido” ou pouco explicativo: “Falha ao atualizar”. O que fazer?

Então tu estás reinstalando um sítio WordPress ou então foste atualizar uma página qualquer e pá! Vem este erro exótico “A resposta não é um JSON válido” ou pouco explicativo: “Falha ao atualizar”.

Sim, os informatas não são muito pródigos nas mensagens de erro, principalmente porque tendem a fazê-las para si, não para os usuários. Mas isso é uma outra questão. Voltemos ao erro.

Confesso que eu não descobri a origem certa do erro, mas pode ter a ver com estas situações:

Motivo 1: Arquivo .htaccess com problemas

É o motivo mais exótico, mas curiosamente, o mais comum. As regras estão erradas por algum motivo (erro de plug-in, padrão diferente da tua hospedagem etc.) e é preciso voltar ao básico.

Para isso, a solução é simples: vai na opção Configurações > Links permanentes e escolhe uma opção diferente da que está no momento (sugiro justamente o ajuste “Padrão”). Vai na página em questão e atualiza novamente.

Deu? Volta no ajuste dos Links Permanentes e escolhe a opção adequada para teu blog e pronto!

Não deu? Segue o próximo motivo.

Motivo 2: Incompatibilidades de plug-ins

Ah, o velho e bom problema de sempre. Plug-ins malucos (ou não) que destroem tua instalação WP por não fazerem o mínimo, que é se comportar educadamente dentro das melhores práticas.

Muito bem, para resolver isso já é sabido: desativa todos os plug-ins que não forem necessários e tenta atualizar a página novamente.

Deu? Parabéns, o mundo é belo!

Não deu? Tenta desativar TODOS os plug-ins.

Não deu? Segue o próximo motivo.

Motivo 3. Incompatibilidade de temas

O criador do tema botou umas funções malucas dentro do functions.php e tu acabaste de atualizar o WordPress. E daí danou-se.

Neste caso, o negócio é trocar o tema por um tema padrão, como o TwentyTwenty (https://br.wordpress.org/themes/twentytwenty/) e tentar de novo.

Deu? Atualiza ou troca de tema.

Não deu? Escreve aí embaixo tua triste situação, que a gente tenta encontrar a solução juntos.

WooCommerce: como adicionar um produto e finalizar a compra direto

Como fazer para que o cliente clique em “Comprar” e vá direto para o checkout, preenchendo seus dados para finalizar a compra?

Em algumas lojas virtuais, temos poucos ou apenas UM produto, de modo que queremos que o cliente clique em “Comprar” e vá direto para o checkout, preenchendo seus dados para finalizar a compra.

No WooCommerce isso é feito criando-se um URL do tipo “add to cart”, que terá o código do produto em questão.

O primeiro passo então, é obter o código do produto. Isso pode ser visto na opção “Produtos” do admin do WP.

O código de produto (ID) aparece quando se passa o cursor sobre o produto

Na lista de produtos, podemos ver o código (ID) quando se passa o cursor sobre o item desejado. No exemplo acima, o código do produto “Suporte veicular para celular” é 3491.

Depois, precisamos da página de finalização de compra. Na maioria das vezes, tua loja vai usar a página criada automaticamente pelo WooCommerce. Em Português, essa página se chama “Finalizar Compra”, com o slug finalizar-compra. Outro slug bem comum é checkout.

Com estes dados, podemos construir o URL desejado, que terá o seguinte formato:

nomedatualoja.com/finalizar-compra/?add-to-cart=<codigo-do-produto>

Por exemplo:

marcoandrei.com/loja/finalizar-compra/?add-to-cart=3491

O URL redireciona para finalizar a compra, já com o produto no carrinho

Para testar é só copiar esse URL na barra de endereço e pronto! A página Finalizar Compra é carregada já com o produto no carrinho, como vemos acima.

Nota que para esse endereço funcionar, a opção “Redirecionar ao carrinho após uma adição bem-sucedida” tem que estar DESLIGADA. Isso porque o parâmetro add-to-cart obviamente adiciona um item ao carrinho.

Sendo assim, se a opção estiver LIGADA, o WooCommerce vai redirecionar o comprador para o carrinho, que é o resultado diferente do que desejamos.

Tu podes encontrar essa opção no menu WooCommerce > Configurações > Produtos.

A opção “Redirecionar ao carrinho após uma adição bem-sucedida” precisa estar desligada

E é isso.

Ficaste com alguma dúvida? Tens uma observação a fazer? Manda teu comentário aí embaixo!

Até a próxima!

Como remover itens e seções do Personalizador do WordPress?

Quando criamos um tema personalizado, não raro temos opções presentes no Personalizador do WordPress (Theme Customizer) que serão ignoradas e não produzirão resultado prático no visual do sítio. Sendo assim, é mais conveniente que essas opções sejam removidas, já que poderão confundir o usuário.

Para começar, a classe que gerencia tudo que envolve o Personalizador se chama WP_Customize_Manager e o objeto criado em execução é $wp_customize.

Há 4 tipos de objetos no Personalizador: Panels (painéis), Sections (seções), Settings (Configurações/Ajustes) e Controls (controles). Neste artigo, vamos ver os dois primeiros.

Quando entramos no Personalizador temos um monte de linguetas/abas. Elas podem ser ou uma seção ou um painel, que contêm os diversos controles para se manipular as configurações.

Quando usamos uma seção ela só permite adicionar controles dentro dela. “Identidade do site” e “Cores” são itens implementados como uma seção.

Já um painel permite que se adicione seções dentro dele. “Menus” e “Widgets” são itens implementados como um painel.

Vamos ver a lista de seções e painéis presentes no WordPress:

TítuloTipoIDOrdem
Identidade do siteseçãotitle_tagline20
Coresseçãocolors40
Imagem do cabeçalhoseçãoheader_image60
Imagem de fundoseçãobackground_image80
Menuspainelnav_menus100
Widgetspainelwidgets110
Configurações da página inicialseçãostatic_front_page120
CSS adicionalseçãocustom_css200

Para se remover uma seção, usamos o método remove_section. Para remover um painel, o método remove_panel.

Finalmente, vamos a um exemplo de código. Cria um plugin ou adiciona este trecho no arquivo functions.php do teu tema:

function remove_itens_personalizador( $wp_customize ) {
  // Remove a seção "Imagem de fundo"
  $wp_customize->remove_section( 'background_image');
  // Remove o painel "Menus"
  $wp_customize->remove_panel( 'nav_menus');
  // Remove a seção "CSS adicional".
  $wp_customize->remove_section( 'custom_css');
}
add_action( 'customize_register', 'mytheme_customize_register',50 );

Simples, não? É isso.

Se tens algo a acrescentar ou tens alguma dúvida, comenta aí embaixo para a gente trocar uma ideia.

Até o próximo!