В качестве временного исправления я добавил это в <theme_dir>/footer.php
непосредственно перед </body></html>
:
<script>
jQuery('.gform_wrapper').show();
</script>
Это скажет jQuery показать все div с классом .gform_wrapper
.
Я уже пробовал перемещать wp_footer();
и все остальные предложения отсюда. и с других сайтов. Ничего не сработало. Я также пытался отключить кеш, очистить кеш, удалить плагины и т. Д. Ошибок JS нет. Формы не отображаются.
Я заметил одну вещь: проблема проявляется только при соблюдении двух условий:
- Пользователь не авторизован.
- Форма использует условную логику.
Если какой-либо из двух не существует, форма загружается нормально.
Я добавлю больше информации здесь, как только узнаю, почему это происходит.
Редактировать:
Основная проблема заключается в том, что DOMContentLoaded
не запускается. Это произойдет, если не все HTTP-запросы будут завершены (например, ожидающие обработки css, js, изображения и т. д.). Следующий код (заимствованный из https://stackoverflow.com/a/49724894/1582649) вызывает событие и показывает форма.
window.document.dispatchEvent(new Event("DOMContentLoaded", {
bubbles: true,
cancelable: true
}));
Я до сих пор не знаю, почему это происходит, так как в консоли нет ожидающих запросов. Вроде все нормально загружается. Пробовал копировать весь сайт на другой сервер и там работает. Это заставляет меня думать, что это связано с хост-провайдером. Может кеш какой.
Пока я оставлю этот фрагмент кода в конце <theme>/footer.php
.
person
Alexandre Schmidt
schedule
28.05.2021