@vahromeevilya-widestudio

Как загружать reCaptcha с помощью partytown?

Есть сайт на WordPress в нем добавлен плагин Contact Form 7 , в нем же включена интеграция с reCaptcha v3

Для оптимизации web-vitals в pagespeed попробовали загружать метрики ( Яндекс и Гугл ) с помощью partytown

Но возникли трудности с переносом рекапчи.

Если вешать type="text/partytown" сразу на запрос к api рекапчи, то ничего не работает
66057e611f253088755535.png
(SITE_KEY - указан намеренно, это не ошибка, специально для скриншота)

Если же вешать уже на сам скрипт подключения рекапчи, который возвращается из этого запроса к api
66057f666bb2a960279783.png
То рекапча загружается, а вот Contact Form 7 , которая подвязана на последовательную загрузку рекапчи, а только потом своих скриптов, перестает работать.

Причем каких то удобных хуков для изменения этой ситуации не нашел, или готовых решений.

Как в итоге можно переместить весь функционал CF7 + reCaptacha в partytown?
  • Вопрос задан
  • 76 просмотров
Решения вопроса 1
@vahromeevilya-widestudio Автор вопроса
Данный плагин https://wordpress.org/plugins/la-sentinelle-antispam/ к сожалению не работал, если подключать jquery самостоятельно.

Поискал другие варианты и нашел это https://ru.wordpress.org/plugins/honeypot/#description

Он тоже требует в себе jquery, но в данном случае, можно подгружать свой и плагин будет работать штатно. Вот, что сделал, чтобы убрать jquery из head ( вызывал TBT в pagespeed )

function custom_deregister_scripts()
{
	wp_deregister_script('jquery-core');
	wp_deregister_script('jquery-migrate');
}
add_action('wp_enqueue_scripts', 'custom_deregister_scripts', 100);

function remove_jquery_dependency_from_wpa_script()
{
	// Отменяем регистрацию исходного скрипта
	wp_dequeue_script('wpascript');
	wp_deregister_script('wpascript');

	// Регистрируем скрипт заново без зависимости от 'jquery'
	wp_register_script('wpascript', plugins_url('/honeypot/includes/js/wpa.js'), array(), $GLOBALS['wpa_version'], true);
	wp_enqueue_script('wpascript');

	// Если вам нужно добавить inline скрипт, как в исходном коде
	wp_add_inline_script('wpascript', 'wpa_field_info = ' . json_encode(wpa_field_info()));
}

// Добавляем нашу функцию в хук wp_enqueue_scripts с приоритетом, который гарантирует, что она выполнится после регистрации скриптов плагином
add_action('wp_enqueue_scripts', 'remove_jquery_dependency_from_wpa_script', 100);


А дальше в footer перед wp_footer добавляем свой jQuery и все.

От reCaptcha пришлось отказаться, в целях поднятия pagespeed баллов
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы