Статьи

Надежные формы с гравитационными формами

Gravity Forms , продукт rocketgenius , представляет собой комплексное решение для форм WordPress. Любой разработчик скажет вам, что создание формы иногда может занимать очень много времени, особенно если для этого нужно сделать больше, чем просто обработать сообщение.

Что делать, если вам нужна форма, которая регистрирует пользователей на ваш сайт на основе определенных критериев? Или что, если вам нужна форма, позволяющая пользователю размещать контент на вашем сайте с точки зрения внешнего интерфейса? Gravity Forms может делать все это, и то, что он не может сделать из коробки, вы можете создать самостоятельно, используя встроенные хуки и фильтры.

Прежде чем я расскажу о том, как Gravity Forms может расширить вашу установку WordPress, важно отметить, что Gravity Forms — это премиальный плагин. Чтобы получить некоторые из положительных моментов, обсуждаемых в этом посте, вам понадобится как минимум бизнес-лицензия для Gravity Forms, однако я настоятельно рекомендую лицензию разработчика, поскольку она обеспечивает максимальную отдачу от затраченных средств. Теперь, когда мы решили это, давайте рассмотрим несколько способов, которыми Gravity Forms могут расширить сайт WordPress.


Можно добавить дополнительные поля в вашу регистрационную форму, добавив код в ваш файл functions.php , но вы можете не тратить слишком много времени на скрытую работу, позволяя Gravity Forms выполнять тяжелую работу. Создать пользователей и назначить роли пользователей с помощью Gravity Forms легко: вы просто создаете форму, сопоставляете свои поля с полями WordPress по умолчанию и выбираете роль пользователя, которая будет назначена при отправке. Вы также можете иметь несколько «регистраций» для одной и той же формы.

Одним из примеров того, как Gravity Forms может расширить процесс регистрации пользователей, является условная регистрация. Например, если у вас есть членский сайт, на котором разрешено регистрироваться только пользователям с адресами электронной почты « @xyz.com » и « @abc.com », вы можете добавить каналы регистрации, которые только создают и назначают пользователей ролям в зависимости от их соответствия. эти критерии, не позволяя другим зарегистрироваться.

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

условно-скриншот

Если вы хотите более надежный интерфейс для своих пользователей, Gravity Forms может быть отличным решением, позволяя пользователям отправлять контент в сообщения напрямую. Все, что вам нужно сделать, это создать форму, которая использует встроенную функцию полей сообщения. Эти поля сообщений соответствуют заголовку сообщения по умолчанию, содержанию тела, выдержке, изображению объекта, категории и тегу. Gravity Forms также отображает данные формы в настраиваемые поля. Чтобы сопоставить ваш контент с настраиваемым полем:

пользовательские поля
Не видите свое настраиваемое поле в раскрывающемся списке? Вернитесь к своим сообщениям и создайте «черновик», включающий содержимое в настраиваемое поле и сохраните его. Затем вернитесь к форме гравитации и проверьте еще раз.

Когда Gravity Forms используется вместе с плагином Gravity Forms + Custom Post Types , комбинация предлагает еще больше функциональности, позволяя сопоставлять данные формы с пользовательскими типами записей, отсюда и название плагина. Если вы беспокоитесь об установке слишком большого количества плагинов — и вам нужна только поддержка пользовательских таксономий — вы всегда можете добавить поддержку вручную , подключившись к Gravity Forms через ваш файл functions.php .


Gravity Forms поставляется с обширной документацией. Если вы можете мечтать об этом, вы, вероятно, можете сделать это. Есть несколько хуков и фильтров, которыми вы можете воспользоваться, и самое приятное, что вы можете назначить их отдельным формам. Предположим, что вы хотите разрешить пользователям отправлять сообщения на ваш сайт, но вы хотите контролировать длину их заголовков, вы можете создать собственную логику проверки, чтобы ограничить длину ввода. Смотрите пример.

01
02
03
04
05
06
07
08
09
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
add_filter( ‘gform_validation_7’, ‘title_size’ );
function title_size( $validation_result ) {
    $form = $validation_result[«form»];
 
    // assuming we don’t want input_3 to be longer than 75 characters.
    if ( strlen( $_POST[‘input_3’] ) > 75 ) {
 
        // set the form validation to false
        $validation_result[«is_valid»] = false;
 
        // find field with ID we’re looking for and marking it as failed validation
        foreach ( $form[«fields»] as &$field ) {
 
            // replace 3 with the field id number you’re validating
            if ( $field[«id»] == «3» ) {
                $field[«failed_validation»] = true;
                $field[«validation_message»] = «Title is too long.»;
                break;
            }
        }
 
    }
 
    // change object back to the result
    $validation_result[«form»] = $form;
    return $validation_result;
}
?>

Первая часть кода использует фильтр для проверки достоверности Gravity Forms и создает функцию, которая проверяет длину рассматриваемого поля. Обратите внимание на цифры 7 и 3 в этом фрагменте. 7 обозначает идентификатор формы, а 3 обозначает фактический входной идентификатор, который тестируется.

Документация Gravity Forms включает в себя список доступных хуков и фильтров, а также подробные примеры для каждого из них — иногда вы даже можете увидеть, когда и почему они могут вам понадобиться.


Если вы ищете готовое решение для форм, которое не просто отправляет электронное письмо, то Gravity Forms — отличный вариант и экономит время. Возможности безграничны. Для тех, кто спорит или стоит на пороге использования Gravity Forms из-за покупной цены, это может показаться высоким, но выгоды и время разработки, сэкономленные при использовании Gravity Forms, окупаются.