Arquivos CSS duplicados usando wp_enqueue_style ()

Eu notei que, no código-fonte do meu site, há Font Awesome carregado cinco vezes. As versões carregadas são 3.2.1, 4.0.1, 4.1.0 e muito mais. Shortcodes plugins, construtores de páginas, o tema e / ou plugins projetados para carregar Font Awesome como Better Font Awesome carregar sua própria versão deste.

O tema que estou usando carrega isso dessa maneira:

wp_enqueue_style( 'fontawesome', get_template_directory_uri() . '/css/fontawesome/font-awesome.min.css', array(), '4.1.0' ); 

Mas a versão anterior usada para usar isso:

 wp_enqueue_style( 'themename-fontawesome', get_template_directory_uri() . '/css/fontawesome/font-awesome.min.css' ); 

Os plugins usam vários ganchos e formatos:

 wp_enqueue_style( 'pluginname-fontawesome', get_template_directory_uri() . '/css/fontawesome/font-awesome.min.css', array(), '4.0.1' ); wp_enqueue_style( 'pluginname-fontawesome', get_template_directory_uri() . '/css/fontawesome/font-awesome.min.css' ); wp_enqueue_style( 'fontawesome', get_template_directory_uri() . '/css/fontawesome/font-awesome.min.css', array(), '3.2.1' ); wp_enqueue_style( 'font-awesome', get_template_directory_uri() . '/css/fontawesome/font-awesome.min.css' ); 

Estou desenvolvendo um plugin e inicialmente queria carregar Font Awesome com isso:

 wp_enqueue_style( 'my-plugin-name-fontawesome', get_template_directory_uri() . '/css/fontawesome/font-awesome.min.css', array(), '4.1.0' ); 

Mas então cheguei à conclusão de que a maneira mais correta de carregá-lo seria:

 wp_enqueue_style( 'fontawesome', get_template_directory_uri() . '/css/fontawesome/font-awesome.min.css', array(), '4.1.0' ); 

Alguém pode confirmar o que seria o melhor padrão de nomeação para carregar este no meu plugin e, se for possível, impedir que outros plugins carregem suas versões, se minha versão for a mais nova?

Eu não quero ter o Font Awesome carregado 5 vezes (30kB cada) e algumas versões antigas não devem ser carregadas, mas eu gostaria de continuar usando o tema, plugins de shortcodes e construtores de páginas que eu estou usando no momento.

Solutions Collecting From Web of "Arquivos CSS duplicados usando wp_enqueue_style ()"

As convenções de nomeação para scripts e estilos sempre foram um problema difícil nos plugins do WordPress, com muitas convenções diferentes usadas e muitas vezes causando conflitos. Vou tentar dar a minha opinião sobre este assunto e elaborar, quando necessário.

Deixe-me começar dizendo sua opinião sobre o exemplo em sua pergunta: na minha opinião, apenas o fontawesome é um identificador adequado.

Antes de mais, deixe-me diferenciar entre scripts e estilos específicos de plug-in e não-plugins. O primeiro grupo consiste em scripts e estilos que só são úteis para esse plugin ou tema específico, enquanto o último consiste em todos os scripts e estilos que podem ser usados ​​em todos os produtos (na maioria dos casos, folhas de estilo WordPress ou bibliotecas de JavaScript).

Script e estilos específicos do plugin

Na minha opinião, scripts e estilos específicos do plugin devem sempre ser prefixados com um prefixo de plug-in. Por exemplo, para campos personalizados avançados, um script de administrador que precisa ser incluído em todas as páginas de administração pode ser registrado como acf-admin (usando wp_register_script( 'acf-admin', .. ) ).

Scripts e estilos não específicos do plug-in

Esta é uma escolha mais difícil, e há várias considerações que precisam ser feitas:

  1. Devo adicionar um número de versão ao identificador?
  2. Devo prefixá-lo com meu prefixo de plug-in?
  3. Devo prefixá-lo com o nome da biblioteca pai?

Na minha opinião, a resposta às questões um e dois são um “não” claro.

Devo adicionar um número de versão ao identificador?

Várias versões do mesmo script ou estilo estão em quase todos os casos não destinados a coexistir em uma única página. Adicionar um número de versão ao identificador de um script ou estilo implica que cada versão do produto é um produto totalmente diferente. Também é assim que o WordPress faz isso: a biblioteca jQuery possui o identificador “jquery” e não “jquery- [versão]”.

Devo prefixá-lo com meu prefixo de plug-in?

Plugins e temas devem confiar em uma única versão de um script ou estilo. Prefixar um identificador com um prefixo de plugin implica que o script ou estilo é específico do produto, o que não é. Este é exatamente o caso no seu exemplo: cada produto considera o script específico para o produto, enquanto é, de fato, mais uma biblioteca.

Adicionar um número de versão ou um prefixo de plugin ao identificador de um script ou estilo elimina uma grande parte do uso de scripts e estilo com um identificador exclusivo.

Devo prefixá-lo com o nome da biblioteca pai?

Se uma biblioteca é totalmente dependente de uma única biblioteca e, portanto, mais de uma extensão para uma biblioteca, deve ser prefixada com o nome ou prefixo da biblioteca “pai”. Se você criou um plugin jQuery chamado “inline-edit”, por exemplo, você deve usar o handle jquery-inline-edit . Isso é feito da mesma forma no núcleo do WordPress: a biblioteca Sortable para jQuery é chamada de “jqeury-classificável” e não apenas “classificável” (como outras bibliotecas de sorting dependentes do jQuery podem muito bem existir).