X

Caros Desenvolvedores de Temas, Parem de Colar Trechos Aleatórios de Código em functions.php

Imagine este cenário: você encontra um trecho de código muito legal em um dos muitos sites de tutoriais do WordPress e o cola no arquivo functions.php do seu tema.

O trecho de código funciona como anunciado, e você então lança seu tema para venda em um conhecido marketplace de temas. Vamos escolher um aleatório e usar... ThemeForest.

De repente, seu tema se torna muito popular, talvez por causa da lista massiva de "recursos" aparentemente úteis que você listou na página de vendas do seu tema. Com o sucesso do seu tema, também vêm uma série de consultas de suporte, principalmente relacionadas a plugins quebrando ao usar seu tema.

Como isso aconteceu, você se pergunta? Talvez seja porque você colou cegamente trechos aleatórios de código WordPress no seu arquivo functions.php sem realmente pensar ou antecipar quaisquer problemas de compatibilidade potenciais.

Um Exemplo da Vida Real

Então, eu estava tentando encontrar um trecho de código que extraísse todas as imagens anexadas de uma postagem e as exibisse automaticamente nessa postagem. Eventualmente, encontrei um trecho de código no Stack Overflow, colei-o no meu arquivo de funções e ele pareceu resolver o problema.

A primeira linha de código era a seguinte:

add_filter('the_content', 'strip_shortcodes');

Ah bem, funcionou, não pensei em mais nada. Mais tarde, tentei incorporar um formulário de contato com um shortcode. Surpresa, não funcionou e passei cerca de uma hora tentando descobrir por quê. Se eu realmente lesse o código que estava colando, eu saberia.

Isso foi para o site de um cliente, não um tema lançado, então, felizmente, não tive que lidar com um dilúvio de consultas de suporte devido a meu erro estúpido.

O Que os Desenvolvedores de Plugins Comerciais Pensam

Aqui está uma citação de Carl Hancock (desenvolvedor do Gravity Forms) sobre este tópico:

O suporte ao popular plugin Gravity Forms significa que vemos mais do que nossa parcela justa de temas mal codificados. Uma das principais questões relacionadas ao suporte que encontramos são temas que não são desenvolvidos usando as melhores práticas, o que resulta em problemas de estilo do Gravity Forms e, em alguns casos, conflitos que fazem com que o Gravity Forms não funcione corretamente.

O maior culpado nessas situações são temas que incluem trechos de código copiados e colados de sites de tutoriais. Desenvolvedores de temas parecem pensar que, apenas porque o trecho de código estava em um site de tutorial, ele deve ser bom. Infelizmente, nem sempre é o caso e essas más decisões resultam em dores de cabeça e problemas de suporte para os usuários.

Quer limitar o potencial de encontrar problemas com plugins causados por um tema mal desenvolvido? Atenha-se a desenvolvedores de temas respeitáveis, como Press75, iThemes, Headway Themes, Organic Themes, WooThemes e StudioPress, para citar alguns. Desconfie de marketplaces de temas onde a experiência e o conjunto de habilidades do autor podem ser deficientes. Na maioria dos casos, você obtém o que paga.

Melhores Práticas de Codificação

Muitos desses problemas podem provavelmente ser evitados seguindo os padrões de codificação do WordPress. Por exemplo, você deve estar prefixando seus nomes de função para evitar quaisquer conflitos potenciais.

No caso de problemas de estilo com o Gravity Forms, você pode querer evitar certos estilos genéricos nos elementos form e input, e em vez disso usar seletores de ID padrão do WordPress para a maior parte do estilo do seu formulário.

Estes incluem #searchform, #s, #searchsubmit na caixa de pesquisa. Também #commentform #author, #url, #email, #comment, #submit para o formulário de comentários.

Conclusão

Se você é um desenvolvedor de temas e não tem muita experiência com PHP, tome cuidado ao copiar e colar esses trechos de código em seu tema. Mesmo que você não seja tão bom em PHP, pode pelo menos ler o código e tentar entendê-lo antes de usá-lo.

Por exemplo, se você descobrir que seus shortcodes não estão funcionando corretamente, uma linha de código que menciona "strip_shortcodes" pode ter algo a ver com isso.

Às vezes, tenho a sensação de que os desenvolvedores de temas do WordPress simplesmente colam trechos aleatórios em seus arquivos functions.php, apenas para poder listar outro "recurso" nas páginas de vendas de seus temas.

Embora eu não seja um grande fã desse tipo de ideia, isso entra em uma discussão completamente diferente sobre o papel de temas e plugins em sites WordPress, que deixarei para um post futuro.

Comentários   Deixe uma resposta

  1. Interessante.. Eu mesmo sou um desenvolvedor de temas, obrigado por trazer isso à minha atenção…

  2. Eu já vi pessoas copiarem e colarem código com avisos de direitos autorais (pedindo que o código não seja compartilhado!) ainda intactos.

    @mkjones – o problema é que o filtro foi removido, ou que sua remoção não foi anunciada? Eu quase sempre removo o filtro wpautop porque ele destrói automaticamente HTML perfeitamente bom (claro que eu conto a todos que ele se foi).

  3. O que realmente me irrita mais é quando eles colam Jquery (e mais 20 outros scripts/plugins) diretamente no cabeçalho do tema deles ou em algum lugar difícil de encontrar. O wp_enqueue_script é tão difícil assim?

    1. Na verdade, postei um exemplo rápido de um Fiasco Jquery Themeforest nos meus fóruns, se alguém quiser conferir.
      Só queria adicionar mais uma coisa que pode ser útil para alguns de seus leitores.
      No início deste mês, eu estava ajudando um cliente que comprou uma licença de suporte para o meu plugin. O tema do cliente tinha cerca de 20 plugins Jquery diferentes carregados no header.php. Nenhum deles estava usando wp_enque_script.
      A maioria desses scripts estava sendo usada apenas para o slider da página inicial e a galeria (que ainda não existia). Como eles estavam sendo carregados em todo o site, os scripts estavam gerando erros Jquery em todas as outras páginas do site que não precisavam desses scripts.
      Em vez de reescrever todo o header.php e porque eu não sabia se algum dos scripts poderia ser necessário para páginas futuras. Usei algumas tags condicionais para resolver o problema. Ao usar tags condicionais, pude desativar todos os scripts arbitrários, quando o site carregava o formulário de registro que estava sendo gerado pelo meu plugin.
      Na verdade, postei um exemplo rápido de um Fiasco Jquery Themeforest nos meus fóruns, se alguém quiser conferir.

      1. Desculpe Leland, você pode remover a primeira linha do meu último comentário? Achei que a tinha removido antes de postar.

        Obrigado!

  4. Ah CARA, eu odeio isso. Isso causa INÚMERAS dores de cabeça ao personalizar temas.

    Eu me lembro do clássico:

    remove_filter(‘the_content’, ‘wpautop’);

    Se infiltrando em um há um tempo. Sem ser devidamente anunciado como um 'recurso' do tema 🙁

  5. Concordo totalmente com você aqui! Já passei por isso e cometi esse erro, apenas para me encontrar em apuros mais tarde.

    As coisas que você pode fazer com o seu functions.php são ótimas, mas você precisa ser organizado e cuidadoso com o que faz se não quiser passar horas depurando depois.

    Uma das recomendações que eu daria seria organizar cuidadosamente esses trechos de código se você quiser mantê-los.
    Mantenha-os em arquivos separados, bem comentados, teste duas vezes após a implementação. No final, documentar seu trabalho sempre compensa, na minha opinião.

  6. Não poderia ter dito melhor. Isso não se limita a trechos de código aleatórios encontrados em tutoriais pela web. Desenvolvedores de temas simplesmente jogam aleatoriamente qualquer código no functions.php sem pensar — você pensaria que eles usariam um hook de vez em quando.

Adicionar um comentário

Ficamos felizes que você tenha escolhido deixar um comentário. Por favor, tenha em mente que todos os comentários são moderados de acordo com nossa política de privacidade, e todos os links são nofollow. NÃO use palavras-chave no campo do nome. Vamos ter uma conversa pessoal e significativa.

Checklist de Lançamento WordPress

O Checklist Definitivo para Lançamento de WordPress

Compilamos todos os itens essenciais da lista de verificação para o lançamento do seu próximo site WordPress em um e-book prático.
Sim, envie-me o eBook Gratuito!