Existe algum arquivo global functions.php que funcione para algum tema?

10

Existe algum tipo global de arquivo functions.php que funciona para qualquer tema?

O problema está aqui:

Quando eu mudo um arquivo functions.php em qualquer tema, eu preciso cuidar de duas mudanças: Primeiro, eu preciso cuidar das atualizações desse tema. Em segundo lugar, eu preciso cuidar de mudar o tema do site.

Então, ao invés de fazer mudanças no arquivo functions.php de um tema, é possível fazer alterações em algum arquivo functions.php independente de qualquer tema?

    
por Mert Nuhoglu 09.10.2011 / 17:07

5 respostas

14

A diferença entre o código temático e o não-tema é organizacional e não técnica. Qualquer código que esteja ativo contribui para o ambiente resultante, não importa de onde é carregado.

Há vários locais de onde o código é carregado, que não fazem parte do núcleo do WordPress:

  • wp-config.php arquivo de configuração
  • tema ativo (e seu pai em temas filho)
  • plugins ativos
  • deve usar plugins
  • drop-ins (estes são um pouco avançados e servem para fins muito específicos)

Lugar típico para o seu próprio código, que não deve fazer parte do tema, é criar um plug-in. Outras abordagens não têm benefícios do caso genérico, mas perdem a interface (gerenciamento através da área administrativa) e conveniências técnicas (ativação / desativação / desinstalação de eventos) do plugin normal.

    
por Rarst 16.10.2011 / 22:50
6

Bem, esse é um problema real e muitos povos enfrentam isso quando mudam de tema, mas há soluções simples.

adicione essa função a uma nova página e não a functions.php e dê a ele um nome único, por exemplo, yousitename + timestamp ou o que você quiser, mas crie pastas exclusivas com o mesmo nome e faça o upload delas como um plugin, de forma que funcione até desativá-lo.

Para entender qual plug-in é o que não deixa de dar nome a esse plug-in, como:

/*
Plugin Name: XYZ
*/
    
por Mohit Bumb 09.10.2011 / 19:06
3

Como complemento à resposta do @MBTheDeveloper.

Outras opções seriam:

  1. Crie um tema filho para seu tema atual e use o arquivo functions.php deste (esta é a "melhor prática").
  2. Use include em seu arquivo php da função de temas e carregue um arquivo custom-function.php que contenha seu código personalizado.
por kaiser 09.10.2011 / 19:38
2

Não faça alterações específicas no site no arquivo functions.php do tema.

Em vez disso, crie um plug-in específico do site. Eu gosto de usar o nome de domínio do site, como "ottopress.com". Em seguida, coloque seus snippets nesse plug-in e deixe-os ativos apenas no site.

Como alternativa, quando você tem um snippet de alterações relacionadas, crie um plug-in específico apenas para elas. Isso lhe dá a opção de ativar / desativar os bits de código relacionados conforme necessário.

    
por Otto 17.10.2011 / 00:10
2

Alguma explicação

Primeiro você precisa entender o propósito de functions.php em um tema. Functions.php é basicamente apenas um arquivo de plug-in com qualquer nome que se presente é automaticamente carregado pelo Wordpress. O Wordpress carrega a função function.php do seu tema atual para páginas front-end do wordpress e também páginas de back-end (admin).

Não existe diferença entre um plugin e o functions.php, exceto que os plugins têm nome e podem ser ativados / desativados independentemente de outros plugins e temas. O funtions.php é anexado ao seu tema atual e, se você mudar para outro tema, o Wordpress usa o functions.php do novo tema e não o antigo functions.php com modificações personalizadas.

Atualizações de tema também sobrescrevem functions.php e não há como evitá-lo, mesmo se você colocar suas modificações personalizadas em arquivos de código separados e incluí-lo em seu fucntions.php, você terá que adicionar essa linha de inclusão após cada atualização .

Geralmente o tipo de código que deve ir em functions.php:

  • funções que são usadas nos arquivos de modelo do seu tema.
  • opções de temas
  • barras laterais
  • menus de navegação
  • formatos de postagem
  • pós miniaturas
  • qualquer código que esteja relacionado apenas ao tema atual.

Como você deseja manter suas modificações personalizadas, mesmo se você mudar de tema. Como o tema filho não funcionará nesse caso, você irá alternar o tema e o functions.php do tema filho não será usado.

A solução

A única solução recomendada pela @Otto é criar um arquivo de plug-in. A abordagem que você pode tomar para criar seu plug-in específico do site é criar uma pasta com seu nome de site em 'wp-content / plugins' e criar arquivos de plug-in nela.

Por que arquivos de plugin? e não um único arquivo de plug-in.

Agrupe a funcionalidade do site relacionado ao código em arquivos de plug-ins separados e não se esqueça de adicionar o cabeçalho do plug-in em todos os seus arquivos de plugin para que eles sejam reconhecidos pelo Wordpress como plugins separados. Você terá a capacidade de ativar / desativar recursos / funcionalidades diferentes do seu site sem quebrar tudo.

    
por Hameedullah Khan 17.10.2011 / 12:25