Gravity Forms добавление отображения нет

Я создаю собственный шаблон внутри своей темы WordPress, так как мой шаблон имеет совершенно другой макет, чем моя активная тема, шаблон имеет свой собственный верхний и нижний колонтитулы, и внутри обоих я правильно объявил wp_head(); и wp_footer(); соответственно.

Внутри моего кода шаблона я пытаюсь отобразить гравитационную форму, используя do_shortcode, но форма не отображается. Когда я осматриваю область, я вижу код формы, но к разделу .gform_wrapper добавлено style="display:none".

Еще одно замечание: гравитационные формы отлично работают на остальной части моего сайта (все страницы/записи, использующие активную тему), у меня проблема только в моем пользовательском шаблоне.

Любые предложения очень ценятся.

Спасибо


person user1776729    schedule 23.06.2013    source источник


Ответы (14)


Хотя это старый вопрос, он все еще возник первым, когда я искал эту проблему, поэтому я добавляю свое решение на случай, если другие тоже ищут. Если ваша тема перемещает скрипты в нижний колонтитул (часто рекомендуется из соображений производительности), включив одну или несколько следующих строк кода в functions.php:

remove_action('wp_head', 'wp_print_scripts'); 
remove_action('wp_head', 'wp_print_head_scripts', 9);
add_action('wp_footer', 'wp_print_scripts', 5);
add_action('wp_footer', 'wp_print_head_scripts', 5);

вам также нужно переместить скрипты Gravity Forms в нижний колонтитул, чтобы они вызывались после jQuery. Вы можете сделать это, добавив следующий код в файл functions.php вашей темы:

add_filter('gform_init_scripts_footer', 'init_scripts');
function init_scripts() {
    return true;
}
person Linn    schedule 24.07.2014
comment
Часть add_filter - это все, что мне нужно - спасибо за это @Linn :) - person Simon Pollard; 22.10.2015
comment
Бит add_filter также исправил это для меня - person BIOSTALL; 17.01.2017

Это потому, что в вашей форме используется условная логика. В любое время, когда присутствует условная логика, вся форма настроена на отображение: none; а затем javascript используется для отображения только тех полей, которые должны отображаться.

ОДНАКО для этого требуется, чтобы Gravity Forms могла выводить необходимый Javascript, используя встроенную в WordPress функцию постановки в очередь... которая выводит Javascript в нижний колонтитул.

Ваша тема, вероятно, не имеет вызова этой функции в файле footer.php вашей темы:

<? php wp_footer(); ?>

Этот вызов функции, который должен быть во всех темах (но многие забывают включить), позволяет плагинам динамически выводить код в нижнем колонтитуле темы. Если его нет, тема не сможет вывести нужный код.

Скорее всего, поэтому ваша форма не отображается должным образом.

Ответ от: http://www.gravityhelp.com/question/why-is-there-a-style-attribute-of-displaynone-being-added-my-form-isnt-showing-up/

person Mikael Mälarström    schedule 04.09.2013
comment
Спасибо за попытку помочь, wp_footer находится в нижнем колонтитуле темы и в нем нет полей условной логики. - person user1776729; 05.09.2013
comment
Это дало мне ключ к разгадке других ошибок Javascript на странице. Избавление от ошибок заставило формы снова появиться. - person Sarah Lewis; 11.02.2015
comment
Та же проблема здесь. Для меня не имеет ничего общего с wp_footer(). Я также вынужден взломать CSS. - person Mike Averto; 30.06.2015
comment
Отличный совет! @SarahLewis прибил это. - person Fydo; 19.08.2016
comment
Для тех, кто больше не может перейти по предоставленной ссылке (потому что они переехали), вот ссылка на веб-архив - person semihcosu; 30.05.2018

Я наконец получил это, чтобы работать.

Чтобы условная логика работала, jQuery, поставляемый с WordPress, должен быть дерегистрирован, в заголовке должна быть загружена версия 1.8.3, а в заголовке должны быть загруженыgravityforms.min.js, conditional_logic.min.js и jquery.maskedinput.min.js. нижний колонтитул:

<?php
 function modify_jquery_version() {
 if (!is_admin()) {
     wp_deregister_script('jquery');
     wp_register_script('jquery',
     'https://code.jquery.com/jquery-1.8.3.min.js', false, '1.8.3');
     wp_register_script('migrate',
     'https://code.jquery.com/jquery-migrate-1.4.1.min.js', false, '1.4.1');

     wp_enqueue_script('jquery');
     wp_enqueue_script('migrate');
     }
 }
 add_action('wp_enqueue_scripts', 'modify_jquery_version');

 function footer_load() {
 if (!is_admin()) {
wp_enqueue_script('gravity','/wp-content/plugins/gravityforms/js/gravityforms.min.js','','',true);
wp_enqueue_script('conditional','/wp-content/plugins/gravityforms/js/conditional_logic.min.js','','',true);
wp_enqueue_script('masked','/wpcontent/plugins/gravityforms/js/jquery.maskedinput.min.js','','',true);
    }
}

 add_action('wp_enqueue_scripts', 'footer_load');
?>
person samcozmid    schedule 13.05.2017

Моя тема WP вызывала более старую версию jQuery (размещенную в Google), и это приводило к тому, что свойство display:none применялось к моим Gravity Forms. Я обновил скрипт постановки в очередь до последней версии jQuery, и это решило проблему.

person Tieson Wooten    schedule 15.03.2014

У меня тоже была эта проблема, фактическое решение - добавить gravity_form_enqueue_scripts($form_id) в ваш файл header.php.

Из самого документа поддержки форм Gravity: https://www.gravityhelp.com/documentation/article/embedding-a-form/#enqueue-scripts-and-styles

person Liz Nix    schedule 20.05.2016

Я смог решить свою проблему, просто отключив плагин под названием Autoptimize, который оптимизирует веб-сайты, объединяя код CSS и JavaScript и сжимая его.

Довольно очевидно, как только вы его нашли.

person Leoncio    schedule 18.09.2015
comment
Было бы лучше устранить неполадки в соответствии с Часто задаваемыми вопросами AO, действительно, деактивация - это такое... крайняя мера ;-) - person futtta; 10.03.2016

Я столкнулся с этой проблемой только сейчас.

Две проблемы: эта старая тема использовала jQuery 1.5.1, и все подключаемые модули, входящие в ее состав, были написаны для более старой версии jQuery. Условная логика в Gravity Forms не работала из-за старой версии jQuery И из-за того, что я переименовал поле условной логики.

После удаления/исправления некоторых выпадающих списков неправильной логики условий и обновления версии jQuery на сайте все снова заработало.

person dtbaker    schedule 30.05.2017

Эта проблема может быть вызвана тем, что любой другой скрипт на странице выдает ошибку. Проверьте консоль, чтобы убедиться, что скрипты не сломаны.

person cameronjonesweb    schedule 28.02.2018

Для меня причиной была консольная ошибка в FireFox, связанная с:

jQuery(document).bind('gform_post_render', function(ev){
     console.log(event, ev);
});
person Ali Klein    schedule 02.03.2018

В качестве временного исправления я добавил это в <theme_dir>/footer.php непосредственно перед </body></html>:

<script>
jQuery('.gform_wrapper').show();
</script>

Это скажет jQuery показать все div с классом .gform_wrapper.

Я уже пробовал перемещать wp_footer(); и все остальные предложения отсюда. и с других сайтов. Ничего не сработало. Я также пытался отключить кеш, очистить кеш, удалить плагины и т. Д. Ошибок JS нет. Формы не отображаются.

Я заметил одну вещь: проблема проявляется только при соблюдении двух условий:

  1. Пользователь не авторизован.
  2. Форма использует условную логику.

Если какой-либо из двух не существует, форма загружается нормально.

Я добавлю больше информации здесь, как только узнаю, почему это происходит.

Редактировать:

Основная проблема заключается в том, что 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

Вы пытались удалить style="display:none" из div .gform_wrapper? Или изменить его на style="display:block"

person Adam G    schedule 23.06.2013
comment
У меня нет места, чтобы удалить его. Кроме того, он добавляется только на страницу пользовательского шаблона. Та же форма, тот же шорткод на других страницах/сообщениях работают нормально без отображения:нет стиля - person user1776729; 23.06.2013
comment
Возможно, вам придется заглянуть в файлы плагинов и найти gform_wrapper или all display. Это где-то там, просто вопрос найти его. - person Adam G; 24.06.2013

Я не думаю, что это поможет, но, возможно, попробуйте это:

.gform_wrapper{
   display:block !important;
}

Я точно знаю, что встроенные стили переопределяют любые таблицы стилей, но !important помог мне переопределить некоторые стили плагинов.

Попробуйте также поискать style="display:none" в файлах плагина. Используйте Textwrangler или другой редактор, в котором вы можете искать несколько файлов. Это также очень помогает мне при редактировании тем и плагинов.

person designtocode    schedule 23.06.2013
comment
Да! его работа это правильное решение? или любой другой способ решения проблемы. - person balamurugan; 21.04.2014

В моем случае я думал, что причина была в том, что я поместил шорткод Gravity в a (и, может быть, он обнаружил и вставил «display: none» в свой iframe?)

<div id="layer_2" style="display: none">
[gravityform id=123 title=false ajax=true]
</div>

Код кадра:

<iframe style='display:none;width:0px;height:0px;' src='about:blank' name='gform_ajax_frame_16' id='gform_ajax_frame_16'></iframe>

Поскольку я удалил «display: none» из div, Gfrom работал нормально. Затем добавил скрипт на страницу:

jQuery(document).ready(function() { jQuery("#_layer_2").attr("style", "display: none"); });

Но! Gform отлично работает с «iframe style=display: none» даже без приведенного выше кода JS. Настоящая причина заключалась в следующем: отсутствие одного "

</div>

" в коде страницы.

person Andrews32    schedule 19.09.2018

Установлено ли «display: none» для самого класса .gform_wrapper? Затем просто измените его в файле css Gravity Forms.

Однако оболочка может иметь идентификатор или другой класс, для которого можно установить display:none.

И последнее, но не менее важное: может быть сломана анимация jQuery для оболочки, поэтому она может оставаться скрытой.

person eevaa    schedule 23.06.2013
comment
Если вы измените гравитационные формы css, ваши изменения будут перезаписаны, как только плагин будет обновлен. Вы должны добавить изменения в css вашей темы, используя более конкретные селекторы css. - person McNab; 23.06.2013
comment
‹div class=gf_browser_chrome gform_wrapper id=gform_wrapper_4 style=display:none› — автоматически добавляется в форму при использовании шорткода. У меня нет места, чтобы удалить его. Кроме того, он добавляется только на страницу пользовательского шаблона. Та же форма, тот же шорткод на других страницах/сообщениях работают нормально без отображения:нет стиля - person user1776729; 23.06.2013