Zauważyłeś u siebie, że Contact Form 7 lub Google reCAPTCHA zintegrowana za jego pomocą spowalnia Twoją stronę? Ja też! Zauważyłem to podczas analizy wyników w PageSpeed Insights. W sekcji “Ogranicz nieużywany JavaScript”, która prosi aby opóźnić ładowanie skryptów do momentu, aż będą wymagane. Jeśli nie potrzebujesz formularza kontaktowego na stronie głównej, to nie ma potrzeby ładować tego skryptu. Co więcej, pokażę Ci sposób na ładowanie reCAPTCHA tylko na stronie z Contact Form 7 tak, aby nie spowalniał całej strony.
Jak włączyć ładowanie reCAPTCHA tylko na stronie z Contact Form 7
Cała operacja jest w WordPress dość prosta. Musimy zmodyfikować tylko (lub aż) dwa pliki.
Pierwszym z nich jest plik wp-config.php w katalogu głównym WordPress. Przejdź do jego edycji (np. za pomocą FileZilla) i dopisz gdzieś w środku:
/** Contact Form 7: wyłącza assety na froncie */
define('WPCF7_LOAD_JS', false);
define('WPCF7_LOAD_CSS', false); Zapisz zmiany i prześlij plik z powrotem na serwer. Snippet ten po prostu wyłącza Contact Form 7 na całej witrynie.
Drugim plikiem, który musisz edytować jest functions.php w motywie potomnym (lub stworzyć snippet np. za pomocą wtyczki Code Snippets). Poniższy snippet szuka na każdej podstronie shortcode należący do Contact Form 7. Jeśli go znajdzie – uruchamia ładowanie jego skryptów i plików CSS, które wyłączyłeś w pliku wp-config.php. Jeśli nie znajdzie – wyłącza ładowanie skryptów reCAPTCHA.
/**
* Sprawdza czy Shortcode Contact Form 7 występuje.
*
* Szuka shortcode `Błąd: Brak formularza kontaktowego.
` tylko w zwykłych typach postów.
*
*/
function tw_cf7_shortcode_exists($post_id = null)
{
if (!is_null($post_id) || (is_singular() && class_exists('WPCF7'))) {
if (is_null($post_id)) {
global $post;
$post_id = $post->ID;
}
return strpos(get_post_field('post_content', $post_id), 'Błąd: Brak formularza kontaktowego.
,
forms: {
on: function(evt, cb) {
window.mc4wp.listeners.push(
{
event : evt,
callback: cb
}
);
}
}
}
})();




