Como web designers, é contra nossa natureza restringir o acesso ao nosso código. Somos ensinados a maximizar a compatibilidade de nossos sites e buscar compatibilidade com versões anteriores sempre que possível; para criar sites progressivamente aprimorados e degradantes. Se conseguirmos fazer isso funcionar no IE1, isso não é ruim ...

O problema, pelo menos para os desenvolvedores do WordPress, é que o WordPress é um monstro; Ele vai engolir você e seu adorável projeto todo se você permitir.

Quando você está produzindo um tema WordPress, seja como um trabalho sob medida para um cliente específico, ou para revender em um dos muitos mercados WordPress, seu objetivo nunca pode ser cobrir tudo o que já fez parte do WordPress. Em vez disso, seu objetivo deve ser usar as principais funções, recursos e filtros da melhor maneira possível para maximizar a base de código atual.

Como profissional, seu tempo é dinheiro, quanto mais você gasta em seu desenvolvimento, menos lucro você ganha; é uma equação simples. O tamanho do WordPress significa que você pode facilmente gastar 80% do seu tempo atendendo a 20% do mercado. Muito melhor gastar 80% do tempo atendendo a 80% do mercado. Em termos de produto de qualidade e seu próprio saldo bancário, é a abordagem mais segura.

Dentro 14 funções-chave do WordPress para impulsionar o desenvolvimento de temas passamos por algumas das funções que, sem falta, incluo no functions.php do meu primeiro tema. Neste artigo, abordamos outra função crucial que deve estar na sua lista de funções-chave do WordPress. Isso vai te salvar tanto a cabeça quanto o coração, dói na estrada.

WordPress já limita a compatibilidade com versões anteriores

Quando uma exploração evitável traz o site do seu cliente (que roda sobre o seu tema) até os joelhos, quem você acha que eles vão ligar? Deixe-me poupar a adivinhação: é você, ok? Não importa que o que quer que esteja causando o problema não seja culpa sua, para o cliente, só importa que você seja o elo mais próximo do possível problema. A última coisa que eles se lembram de fazer é contratá-lo para construir um novo tema para eles.

Se após a inspeção você descobrir que o site do cliente ainda roda no WordPress mais antigo que a versão estável atual, demore alguns segundos e bata na face: bochecha esquerda primeiro, depois bochecha direita. Seu tema não deve permitir que eles façam isso!

Se você está prestando atenção, a partir da versão 3.6 do WordPress, você terá começado a notar uma função bastante alta no functions.php do tema padrão que restringe o uso do tema padrão para versões do WP mais recentes que o 3.6. Na verdade, é a segunda função definida nas funções do Twenty Fourteen.php!

Essa função é algo como isto:

/*** Twenty Fourteen only works in WordPress 3.6 or later.*/if ( version_compare( $GLOBALS['wp_version'], '3.6', '<' ) ) {require get_template_directory() . '/inc/back-compat.php';}

Estamos interessados ​​no conteúdo desse arquivo back-compat.php . As funções definidas lá são o que estamos procurando para usar com nossos próprios temas.

Nenhum país para WordPress antigo

Quase não importa quais recursos você está implementando, mas se possível, limite o uso de seus temas a novas versões do WordPress. Isso garantirá que o usuário final atualize sua instalação (tanto melhor para eles em termos de segurança) quanto garanta que você passe a maior parte do tempo de desenvolvimento na maioria dos usuários.

Definindo a função

Para isso, usamos a função PHP version_compare () para verificar a versão atualmente instalada do WordPress em relação à última versão disponível, certificando-se de que a última versão instalada não seja inferior a 3.6 - faça sua própria seleção sobre qual versão testar 3.6 não é uma recomendação, apenas um exemplo. Essa função é algo como isto:

if ( version_compare( $GLOBALS['wp_version'], '3.6', '<' ) ) {// do (or do not) somethingfunction butter_never_get_old() {switch_theme( WP_DEFAULT_THEME, WP_DEFAULT_THEME );unset( $_GET['activated'] );add_action( 'admin_notices', 'butter_step_your_game_up' ); // we add some admin notices here (we haven't defined this function yet)}add_action( 'after_switch_theme', 'butter_never_get_old' );}

O que esta função faz é definir uma função de ação butter_never_get_old () que só será executada quando a função core after_switch_theme () for chamada. Até agora, a função butter_never_get_old () , que fica dentro da nossa verificação de versão, faz o seguinte:

  1. Verifica qual versão do WordPress está instalada atualmente
  2. Garante que a versão é mais recente que a Versão 3.6
  3. Executa o if / Else de relevância cosmética:
  4. Se for: ative o tema.
  5. Se não for: não ative o tema. Em vez disso, reative / ative o tema padrão e, para ser legal, envie uma bela mensagem que instrua o usuário a atualizar sua instalação ridiculamente antiga. Venha, vovô!

Cutucada, cutucada! Atualize para s #% *

Em seguida, precisamos definir a função butter_step_your_game_up () que imprime nossos avisos de administração se algo não der certo, o que significa que a versão do WP é mais antiga do que gostaríamos.

function butter_step_your_game_up() {$update_message = sprintf( __( 'This theme requires WordPress version 3.6 or newer. You're currently using version %s. Please upgrade.', 'butter' ), $GLOBALS['wp_version'] );printf( '

%s

', $update_message );}

A função butter_step_your_game_up () acima define nossa string de mensagem de erro traduzível na variável $ update_message conforme definido (esse tema requer… etc) que é então impresso e exibido ao usuário (de dentro da função butter_never_get_old () definida anteriormente) e visualmente, dentro um div com classe de 'erro'. Esta mensagem pode ser estilizada conforme desejado.

Então, tudo dito, nossa função deve ser assim:

if ( version_compare( $GLOBALS['wp_version'], '3.6', '<' ) ) {// This function deactivates our newly activated theme if WP isn't newer than 3.6// It then re/activates the default themefunction butter_never_get_old() {switch_theme( WP_DEFAULT_THEME, WP_DEFAULT_THEME );unset( $_GET['activated'] );add_action( 'admin_notices', 'butter_step_your_game_up' );}add_action( 'after_switch_theme', 'butter_never_get_old' );// This function, called from within the above function// outputs the relevant message that nudges the theme's user// to upgradefunction butter_step_your_game_up() {$update_message = sprintf( __( 'This theme requires WordPress version 3.6 or newer. You are currently using version %s. Please upgrade!', 'butter' ), $GLOBALS['wp_version'] );printf( '

%s

', $update_message );} }

Com isso, você garante que seu tema não possa ser ativado em instalações do WordPress anteriores à versão 3.6.

Mantém isso limpo

Tanto quanto possível, você deve manter suas funções limpas. Ele deve estar limpo no sentido de que você deve ser capaz de digitalizar rapidamente e discernir imediatamente o que cada função está fazendo. Para esse fim, podemos querer mover nossa função para uma pasta de inclusão.

Se você ainda não o fez, crie uma pasta e nomeie-a como 'inc' dentro do diretório do seu tema. Dentro disso, crie um arquivo php e nomeie-o como back-compat.php . Copie e cole o conteúdo da função que acabamos de criar, deixando apenas o version_compare () em functions.php:

if ( version_compare( $GLOBALS['wp_version'], '3.6', '<' ) ) {require get_template_directory() . '/inc/back-compat.php';}

Dentro do arquivo /inc/back-compat.php , cole as funções que definimos anteriormente:

function butter_never_get_old() {switch_theme( WP_DEFAULT_THEME, WP_DEFAULT_THEME );unset( $_GET['activated'] );add_action( 'admin_notices', 'butter_step_your_game_up' );}add_action( 'after_switch_theme', 'butter_never_get_old' );function butter_step_your_game_up() {$update_message = sprintf( __( 'This theme requires WordPress version 3.6 or newer. You are currently using version %s. Please upgrade!', 'butter' ), $GLOBALS['wp_version'] );printf( '

%s

', $update_message );}

Conclusão

É sempre difícil dizer a um bom desenvolvedor que ele precisa limitar a compatibilidade do código. Mas o tamanho da base de código do WordPress, especialmente quando você se concentra em compatibilidade com versões anteriores, torna a limitação do escopo do seu tema uma necessidade prática. WordPress se fazendo isso deve destacar a sua validade.

E agora, livres dos obstáculos constantes apresentados pelo código desatualizado, você pode concentrar suas energias onde elas pertencem: em aproveitar o incrível poder do WordPress.

Imagem / miniatura em destaque, usa imagem de compatibilidade via Shutterstock.