Existe um esquema fácil de entender para decidir que tipo de código pertence a um plugin ou ao tema functions.php
?
Não são muitos casos e muitos debates sobre o assunto, principalmente porque existem alguns equívocos sobre o funcionamento interno do WordPress. Estou pedindo uma resposta baseada em fatos, não em opiniões.
Deve explicar como lidar com esses pontos (e provavelmente mais):
- tipos de postagens e taxonomias personalizadas
- formulários de contato
- códigos de acesso
- widgets personalizados
add_theme_support( 'automatic-feed-links' );
- Funções de SEO como
meta
elementos personalizados - mudança de tema
Muitas vezes existem prós e contras de ambos os lados. Nossa pergunta mais popular Melhor coleção de código para o seu arquivo functions.php tem muitos trechos de código como respostas que são pelo menos discutíveis.
Precisamos de critérios que um iniciante possa entender, talvez uma lista de verificação - com motivos.
Veja também a pergunta relacionada de Chip Bennett em nosso meta site: Perguntas que solicitam especificamente uma solução "sem um plug-in"
Relacionado: Onde coloco os trechos de código que encontrei aqui ou em outro lugar na Web?
Respostas:
Gostaria de começar com esta pergunta: a funcionalidade está relacionada à apresentação de conteúdo, ou à geração / gerenciamento de conteúdo, ou do site ou da identidade do usuário?
Se a funcionalidade não estiver relacionada especificamente à apresentação do conteúdo , ela estará diretamente no território do plug-in. Esta lista é longa:
wp_head
conteúdo, como links canônicos, gerador e outras meta HTML, etc.)Se a funcionalidade está relacionada à apresentação do conteúdo , então é um candidato para ser incluído no tema. Nesse ponto, eu voltaria ao critério de troca de tema do @ Raf912 : você perderia a funcionalidade ao trocar de tema ? Se a resposta para essa pergunta for não , a funcionalidade pertence ao Tema. Alguns exemplos:
add_theme_support()
(suponho que essa deva ser óbvia)Normalmente, essas duas perguntas fornecerão uma linha de diferenciação bastante clara; no entanto, há exceções.
Tipos de postagem personalizados
Os Tipos de postagem personalizados, por exemplo, são um híbrido único de geração e apresentação de conteúdo, dada a maneira como a Hierarquia de modelos funciona para páginas de índice de arquivamento e páginas de postagem únicas . O aspecto de geração de conteúdo dos CPTs normalmente os colocaria diretamente no território dos plug-ins; no entanto, os plug-ins não podem definir páginas de modelo que se encaixem inerentemente no design / layout / estilo de um determinado tema (especialmente se o CPT exibir outro que não seja o título / conteúdo / meta comum, ou tiver taxonomias personalizadas associadas a ele).
A longo prazo, a solução para essa disparidade, IMHO, é ter uma convenção / consenso padrão para a definição de CPTs para determinados tipos de conteúdo (listagens de imóveis, eventos de calendário, produtos de comércio eletrônico, entradas de livros / bibliotecas de mídia etc.) .). Dessa forma, o conteúdo gerado pelo usuário permanecerá portátil entre os Temas que implementam a definição padrão / convencional de um determinado CPT, enquanto os desenvolvedores do Tema mantêm a flexibilidade de definir o design / layout / estilo desse CPT nos arquivos de modelo do Tema.
Links de mídia social
Da mesma forma, eu normalmente diria que os links de perfil de mídia social, que se tornaram quase onipresentes nos Temas atuais, são Territórios de Plugins, porque não têm nada a ver com a apresentação de conteúdo. A melhor solução seria que esses perfis fossem definidos em algum ponto do núcleo; no entanto, atualmente não há meios padrão / consensuais para definir esses links. Eles são melhor definidos no nível de configuração do site ou por usuário? Se por usuário, a meta de qual usuário é exposta no modelo? etc.
Então, novamente, a longo prazo, a solução para essa disparidade é definir o local onde esses links são definidos ou a comunidade de desenvolvedores do Theme desenvolver seu próprio consenso. Enquanto isso, não há realmente nada a não ser mantê-los definidos em cada Tema.
fonte
add_theme_support( 'automatic-feed-links' );
não é de apresentação. Mas é exigido pelas diretrizes do tema . Por que é um risco necessário perder essa funcionalidade após uma troca de tema?add_theme_support()
só pode ser implementado através do Tema. O usoadd_theme_support( 'automatic-feed-links' )
no Tema realmente garante uma experiência consistente de Tema para Tema, pois os links de feed gerados serão os mesmos.Um teste fácil onde o código está melhor colocado:
você sente falta da funcionalidade, o blog não está funcionando adequadamente ou os fragmentos do tema antigo (por exemplo, códigos de acesso) são deixados?
sim: coloque-o em um plugin
no: deixe em functions.php
Exemplos: escreva um código curto. Depois de mudar o tema, os códigos de acesso simples são deixados em suas postagens. Por isso, será melhor colocado em um plugin.
Escreva uma função para listar os últimos comentários. Depois de mudar o tema, tudo está bem, porque talvez o outro tema tenha uma função equivalente.
Realmente depende do código e o que ele fará. Alguns códigos influenciam apenas o estilo ou o conteúdo do tema, outros modificam as postagens do blog.
fonte
functions.php
. Se precisar aplicar a mais de um tema, coloque-o em um plugin.Não acho que haja uma resposta fácil para essa pergunta, mas aposto que poderíamos fazer um fluxograma para ajudar na decisão. Aqui está um esboço de um fluxograma, que pode e deve ser expandido. Comente com sugestões!
fonte
A partir daqui Temas VS Plugins
Adicione código personalizado a um tema filho para que, quando você atualize o tema pai, seu código personalizado não seja perdido.
Você também pode criar um plug-in específico do site que também contém todo o seu código personalizado.
No que diz respeito à escrita de código versus plug-ins, você pode usar plug-ins e funções no entanto, para a maior parte do que deseja, a codificação manual é a melhor e mais fácil de modificar, exceto em alguns casos, como caixas de meta, nas quais você pode considerar usar um plug-in, a menos que é um desenvolvedor de temas.
http://codex.wordpress.org/Plugin_API/Filter_Reference/user_contactmethods
fonte
Sei que este é um cavalo morto e que Chip o cobriu, mas queria acrescentar alguns pensamentos.
Se você faz uma programação viva e se vê trabalhando em sites wordpress dentro de prazos, vai descobrir que realmente se resume ao tempo.
Na maioria das vezes, especialmente para aqueles que estão começando, é muito mais rápido e simples adicionar o que você precisa a um tema e chamá-lo de pronto.
Dito isto, se você trabalha no wordpress de forma semi-regular, deve considerar seriamente o seguinte :
Isso deve lidar com tudo o que você normalmente precisará fazer com um plug-in, incluindo ativação, desativação, atualização de versão, criação de painéis de administração e desinstalação.
Se você reservar um tempo para fazer isso, encontrará:
Agora você pode criar as coisas corretamente e realizar projetos futuros mais rapidamente.
Isso deve lidar com tudo o que é comumente necessário em um tema:
Depois de fazer isso, crie um esqueleto de tema filho que use seu tema principal.
Depois de concluir essas duas coisas, a criação de novos sites para as pessoas se torna muito mais rápida.
Se você fizer o acima, poderá trabalhar no seguinte:
E, se você fizer todas as opções acima , verá que a resposta de Chip não será apenas ideal, mas também ideal.
fonte
A resposta simples é essa ..
O código depende de alguma funcionalidade incorporada a um tema específico? Se sim, coloque um tema.
Deseja que esse código seja transferível entre sites e entre temas? Se sim, coloque um plugin.
Se a resposta for não para as duas opções acima, imagine o site daqui a cinco anos, quando for a hora de um novo design. A função do código que você está escrevendo é algo que sobreviverá à próxima atualização de design? Se sim, coloque um plugin.
Além disso, se você não estiver usando temas filhos e planeja atualizar o tema, sugiro que você use um plug-in.
fonte