Restringindo um Plugin para Carregar Apenas seu CSS e JS em Páginas Selecionadas?

9

Gostaria de fazer com que um plug-in restringisse o carregamento de folhas de estilo CSS e JavaScript JS apenas para as páginas para as quais são necessárias.

Um exemplo para a minha pergunta é o plugin Formulário de contato 7 que eu usei para criar um formulário em uma página do meu site (a página " entre em contato comigo "). No entanto, adiciona as seguintes linhas a CADA página / mensagem no site:

<link rel='stylesheet' id='contact-form-7-css'  href='http://www.r-statistics.com/wp-content/plugins/contact-form-7/styles.css?ver=2.3.1' type='text/css' media='all' /> 

<script type='text/javascript' src='http://www.r-statistics.com/wp-content/plugins/contact-form-7/scripts.js?ver=2.3.1'></script> 

Isso me faz suspeitar que este plugin está prejudicando o tempo de carregamento do meu site, para uma extensão que me interessa em apenas uma página no site.

Assim, minha pergunta é: como posso remover essas linhas extras de todas as páginas, exceto da página "Fale comigo", mas sem desativar o plug-in?

    
por Tal Galili 22.08.2010 / 15:44

1 resposta

9

Estilos e scripts são sempre configurados pelas funções wp_enqueue_script() e wp_enqueue_style() , que precisam ser ligadas a um gancho de ação específico para funcionar. Eu dei uma olhada no Formulário de Contato 7 e parece que ele está usando tags de ação de wpcf7_enqueue_scripts e wpcf7_enqueue_styles para adicioná-las aos ganchos wp_print_scripts e wp_print_styles .

Então, o que você precisa fazer é desvincular os scripts e estilos de todas as páginas mas da sua página de contato. A ação wp_head é acionada antes das ações de script e estilos, portanto, é necessário adicionar algo assim ao arquivo functions.php do seu tema:

function remove_wpcf7_extras() {
    remove_action('wp_print_scripts', 'wpcf7_enqueue_scripts');
    remove_action('wp_print_styles', 'wpcf7_enqueue_styles');
}

if( ! is_page('contact me') ) {
    add_action('wp_head', 'remove_wpcf7_extras');
}

A função is_page () retornará true quando você estiver na página de contato (supondo que o nome seja "entre em contato comigo") ... você também pode usar o slug da página e o ID da página para o filtro. Em todas as outras páginas, a condição if() adicionará a função de remoção de script / estilo à ação wp_head , que é acionada logo antes das ações wp_print_scripts e wp_print_styles .

Isso deve remover o código extra de suas páginas, e você não precisará desativar o plug-in ou editar os arquivos principais. As funções e códigos que listei acima também não farão com que seu tema seja quebrado se você remover o Contact Form 7 no futuro, ou ... então não precisa se preocupar com a futura compatibilidade de atualização.

    
por EAMann 22.08.2010 / 16:33