it-swarm-eu.dev

Omezení pluginu pouze na načtení CSS a JS na vybrané stránky?

Chtěl bych způsobit, že plugin omezí načtení CSS stylů a JavaScript JS souborů pouze na ty stránky, pro které jsou potřeba.

Příkladem mé otázky je plugin Kontaktní formulář 7 který jsem použil k vytvoření formuláře na jedné stránce na mých stránkách (stránka " contact me "). Přidává však následující řádky na každou stránku/příspěvek na webové stránce:

<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> 

To mě vede k podezření, že tento plugin zhoršuje dobu načítání mých stránek, pro rozšíření, které mě zajímá pouze na jedné stránce webu.

Moje otázka tedy zní, jak mohu odstranit tyto další řádky ze všech stránek s výjimkou stránky „Kontaktujte mě“, ale bez deaktivace pluginu?

9
Tal Galili

Styly a skripty jsou vždy nastaveny funkcemi wp_enqueue_script() a wp_enqueue_style(), které musí být vázány na konkrétní akci, aby fungovaly. Vzal jsem nahlédnutí do Kontaktního formuláře 7 a vypadá to, že pomocí značek akcí wpcf7_enqueue_scripts a wpcf7_enqueue_styles je přidá do háčků wp_print_scripts a wp_print_styles.

Takže, co musíte udělat, je odemknout skripty a styly z každé stránky ale vaší kontaktní stránky. Akce wp_head vystřelí před akcí skriptu a stylů, takže budete muset přidat něco takového do souboru function.php:

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');
}

Funkce is_page () / vrátí true, když jste na stránce kontaktu (za předpokladu, že jméno je "contact me") ... můžete také použít stránku slug a ID stránky filtru. Na všech ostatních stránkách bude podmínka if() podmíněna přidáním funkce odstranění skriptu/stylu do akce wp_head, která spustí akce těsně před akcí wp_print_scripts a wp_print_styles.

To by mělo z vašich stránek odstranit další kód a zásuvný modul nebudete muset deaktivovat ani upravovat žádné základní soubory. Funkce a kód, které jsem uvedl výše, také nezpůsobí, že se vaše téma přeruší, pokud odstraníte kontaktní formulář 7 v budoucnu, a to buď ... takže se nemusíte starat o budoucí kompatibilitu s aktualizací.

9
EAMann