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

11

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

O problema está aqui:

Quando altero um arquivo functions.php em qualquer tema, preciso cuidar de duas alterações: Primeiro, preciso cuidar das atualizações desse tema. Segundo, preciso cuidar de mudar o tema do site.

Então, em vez de fazer alterações no functions.php de um tema, é possível fazer alterações em alguns arquivos functions.php que são independentes de qualquer tema?

Mert Nuhoglu
fonte
4
A recompensa é realmente necessária? A pergunta já tem boas respostas
onetrickpony 16/10/11
Como @Mohit Bumb foi quem deu a) a recompensa eb) foi o primeiro a sugerir o uso de um plug-in, eu diria que ele deveria receber os pontos de repetição (de volta). IMO uma recompensa não era necessário (e eu acho que ele não sabia que ele tinha que realmente dar-lhe afastado ).
Kaiser

Respostas:

15

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

Existem 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 para temas filhos)
  • plugins ativos
  • deve usar plugins
  • drop-ins (estes são um pouco avançados e servem a propósitos muito específicos)

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

Rarst
fonte
+1 para você e o @kaiser. Acredito que a resposta correta seja 1) Crie um tema filho para abrigar a funcionalidade personalizada functions.phpou 2) crie um plug-in personalizado para abrigar essa funcionalidade, para que seja portátil entre vários temas.
Chip Bennett
@Chip desde a pergunta pergunta sobre a preservação do código ao alternar temas. Não vejo o tema filho como adequado. E se você quiser mudar para o tema que é tema filho? O plug-in é mais apropriado para determinados requisitos.
Rarst
foi por isso que votei em vocês dois. :) Mas você ainda pode usar um Tema filho ao alternar Temas; basta alterar a Template:tag adequadamente no Tema infantil style.css.
Chip Bennett
@ Chip você não entendeu meu ponto. E se eu quiser usar o tema filho? Eu crio o tema filho do Twenty Eleven com o meu código. Quero mudar para o tema que também é tema filho do Twenty Eleven (ou outro pai). Não tenho caminho, exceto mesclar manualmente dois temas filhos. Em seguida, cancelando a fusão da próxima vez que eu mudar de tema. É uma bagunça.
Rarst
Eu uso obrigatório para isso. Acho que é para ser uma rápida, forma straighforward para adicionar funções, ganchos e códigos de acesso disponíveis para uso em temas
chiliNUT
6

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

adicione essa função a uma nova página, não functions.php, e dê um nome exclusivo, por exemplo, yousitename + timestamp ou o que você quiser, mas crie uma pasta única com o mesmo nome e feche-a com zip e faça o upload como um plug-in para que certamente funcione até você desabilitá-la .

Para entender qual plugin é o que não deve faltar, dê um nome a esse plugin, como:

/*
Plugin Name: XYZ
*/
Mohit Bumb
fonte
3

Como complemento à resposta @MBTheDeveloper.

Outras opções seriam:

  1. Crie um tema filho para o seu tema atual e use o arquivo functions.php deste (esta é a "melhor prática").
  2. Use includenos seus temas o arquivo php de função e carregue um arquivo custom-function.php que contenha seu código personalizado.
kaiser
fonte
2

Não faça alterações específicas no seu 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-o ativo apenas nesse site.

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

Otto
fonte
2

Alguma explicação

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

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

As atualizações de temas também substituem o arquivo 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 no seu arquivo fucntions.php, será necessário 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 usadas nos arquivos de modelo do seu tema.
  • Opções de temas
  • barras laterais
  • menus de navegação
  • formatos de postagem
  • postar miniaturas
  • qualquer código que esteja relacionado apenas ao tema atual.

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

A solução

A única solução recomendada pelo @Otto é criar um arquivo de plug-in. A abordagem a ser adotada para criar o plug-in específico do site é criar uma pasta com o nome do seu site em 'wp-content / plugins' e criar arquivos de plug-in nele.

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

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

Hameedullah Khan
fonte