Atribuindo um número de versão à folha de estilo principal de um tema filho

8

No header.php, gosto de atribuir um número de versão à folha de estilo para que o navegador seja forçado a atualizá-lo. Mas ao trabalhar com um tema filho, sua folha de estilo não é explicitamente chamada, mas o WordPress a procura automaticamente. Então, como ou onde atribuir um número de versão à folha de estilo do tema filho?

    
por drake035 21.05.2014 / 19:23

5 respostas

5

Você pode atualizar a versão na própria folha de estilos de temas filho ...

/*
 Theme Name:   Twenty Fourteen Child
 Theme URI:    http://example.com/twenty-fourteen-child/
 Description:  Twenty Fourteen Child Theme
 Author:       John Doe
 Author URI:   http://example.com
 Template:     twentyfourteen
 Version:      1.1.2 <---- Update here
*/
    
por Matt Royal 28.05.2014 / 13:49
9

Acho que a melhor maneira de fazer isso é deixar a folha de estilo do tema filho (style.css) vazia apenas com os comentários necessários (como nome do tema, descrição etc., para que o wordpress possa reconhecer seu tema) e criar outro arquivo css na pasta-nome-do-seu-tema / css / main.css

Depois disso, no function.php você pode ter uma nova "versão" toda vez que você alterar o seu arquivo:

function my_scripts_and_styles(){

$cache_buster = date("YmdHi", filemtime( get_stylesheet_directory() . '/css/main.css'));
wp_enqueue_style( 'main', get_stylesheet_directory_uri() . '/css/main.css', array(), $cache_buster, 'all' );

}

add_action( 'wp_enqueue_scripts', 'my_scripts_and_styles', 1);

A lógica:

Toda vez que você salva o arquivo, o horário modificado do arquivo está sendo alterado. A nova hora está sendo passada para a função date para converter o tempo (filemtime retorna um inteiro representando a hora) para o formato de data para torná-lo uma string no formato desejado. Em nosso exemplo, o tempo está sendo formatado com precisão de minutos. Você pode alterá-lo para rastrear mesmo segundo, ou seja, "YmdHis" . Depois que o novo horário modificado do arquivo estiver sendo passado como uma nova versão para wp_enqueue_style .

Referência:

enlace

enlace

    
por Laxmana 01.06.2014 / 13:24
4

O que você precisa fazer é cancelar o registro do estilo principal pelo identificador e registrá-lo novamente com o número da sua versão. Nesse caso, o identificador é style-css .

Você pode determinar o identificador que precisa usar observando o link da folha de estilo processada:

<link rel='stylesheet' id='style-css-css'  href='http://site-url/wp-content/themes/child-theme/style.css?ver=4.6.1' type='text/css' media='all' />

Aqui, o código é style-css-css , o que significa que nosso identificador é style-css

Coloque isso no function.php do seu tema filho:

function wpse_145141_change_style_version(){
    // First de-register the main stylesheet
    wp_deregister_style( 'style-css' );
    // Then add it again, using your custom version number
    wp_register_style( 'style-css', get_stylesheet_uri(), array(), "VERSION_NUMBER" );
    //finally enqueue it again
    wp_enqueue_style( 'style-css');
}

add_action( 'wp_enqueue_scripts', 'wpse_145141_change_style_version');
    
por kraftner 28.05.2014 / 10:49
0

Acredito que, se você usar o editor de temas do Wordpress para editar a folha de estilo do tema filho, ele anexará automaticamente um novo número de versão toda vez que você salvar o arquivo.

    
por selfagency 21.05.2014 / 19:44
0

Em vez de usar o style.css padrão, eu geralmente uso wp_enqueue_style nas funções do tema filho.php ou em outro php incluído Arquivo. Então, você ainda teria o style.css no tema filho com todos os detalhes do tema filho, mas você pode ter um arquivo css separado no tema filho para o estilo do tema filho real (normalmente, coloco isso em um recurso / css diretório dentro do tema filho). Isso também permitiria definir a versão CSS com o quarto parâmetro. Por exemplo:

function theme_name_child_scripts() {
    wp_enqueue_style( 'style-name', get_stylesheet_directory_uri() . '/assets/css/child-style.css', array(), '1.0.0', 'screen');
}

add_action( 'wp_enqueue_scripts', 'theme_name_child_scripts' );

Você pode adicionar uma prioridade à ação se ela não estiver carregando na ordem correta ou trabalhar com o parâmetro de dependência em wp_enqueue_style acima:

add_action( 'wp_enqueue_scripts', 'theme_name_child_scripts', 20 );
    
por Bjorn 27.05.2014 / 19:30