Gravity Forms не выполняет замену переменных в уведомлении, отправленном из WebAPI

Я использую формы Gravity, и у меня есть автоматическое уведомление. Это уведомление появляется после того, как мое приложение для Android подключается к нему и добавляет запись. Моя проблема в том, что он не выполняет замену переменных.

Так, например, Тема в редакторе форм определяется как Отправка новых приложений для переезда от {Full Name:2}

Но письмо заканчивается как Новое приложение Moving House от.

Все переменные формы заменяются ничем в электронном письме. но если я проверю запись на сайте, она там.

Я добавил свой код в функцию post_entries в Gravity Forms WebApi следующим образом:

public function post_entries($data, $form_id = null) {

    $this->authorize('gravityforms_edit_entries');

    $result = GFAPI::add_entries($data, $form_id);

    if (is_wp_error($result)) {
        $response = $this->get_error_response($result);
        $status = $this->get_error_status($result);
    } else {
        $status = 201;
        $response = $result;

        // This is the form object from Gravity Forms.
        $form = \GFAPI::get_form($form_id);

        $event = 'form_submission';

        $notifications = GFCommon::get_notifications_to_send($event, $form, $lead[0]);
        $notifications_to_send = array();

        //running through filters that disable form submission notifications
        foreach ($notifications as $notification) {
            if (apply_filters("gform_disable_notification_{$form['id']}", apply_filters('gform_disable_notification', false, $notification, $form, $lead), $notification, $form, $lead)) {
                //skip notifications if it has been disabled by a hook
                continue;
            }

            $notifications_to_send[] = $notification['id'];
        }

        GFCommon::send_notifications($notifications_to_send, $form, $lead, true, $event);
    }

    $this->end($status, $response);
}

РЕДАКТИРОВАТЬ: вот рабочий код с помощью Наоми

public function post_entries( $data, $form_id = null ) {

    $this->authorize( 'gravityforms_edit_entries' );
    $result = GFAPI::add_entries( $data, $form_id );

    if ( is_wp_error( $result ) ) {
        $response = $this->get_error_response( $result );
        $status   = $this->get_error_status( $result );
    } else {
        $status   = 201;
        $response = $result;

       $lead = \GFAPI::get_entry($result);
       // This is the form object from Gravity Forms.
       $form = \GFAPI::get_form($form_id);
       $event ='form_submission';

        $notifications         = GFCommon::get_notifications_to_send( $event, $form, $lead );
        $notifications_to_send = array();

        //running through filters that disable form submission notifications
        foreach ( $notifications as $notification ) {
            if ( apply_filters( "gform_disable_notification_{$form['id']}", apply_filters( 'gform_disable_notification', false, $notification, $form, $lead ), $notification, $form, $lead ) ) {
                //skip notifications if it has been disabled by a hook
                continue;
            }
            $notifications_to_send[] = $notification['id'];
        }
        GFCommon::send_notifications( $notifications_to_send, $form, $lead, true, $event );
    }

    $this->end( $status, $response );
}

person technocrusaders.com    schedule 07.04.2015    source источник


Ответы (1)


В вашем коде переменная $lead, которую вы отправляете в функции уведомлений, нигде не установлена ​​(вы просто взяли ее из воздуха :-)). Эта переменная должна содержать объект записи Gravity Forms, который функции уведомлений затем смогут использовать для замены переменных.

Ваш $result из GFAPI::add_entries даст вам массив идентификаторов записей, и вы можете использовать функцию GFAPI::get_entry для получения объекта записи из идентификатора записи.

person Naomi    schedule 07.04.2015
comment
$notifications = GFCommon::get_notifications_to_send($event, $form, $result[0]); - person technocrusaders.com; 07.04.2015
comment
Новый комментарий здесь, он не позволит мне редактировать: Спасибо, что увидел это, мой Плохой!, это имеет смысл. Моя переменная должна быть $result[0], так что строка должна быть: $notifications = GFCommon::get_notifications_to_send($event, $form, $result[0]); Я попробую метод GFAPI::get_entry, чтобы получить объект записи. Спасибо! - person technocrusaders.com; 07.04.2015
comment
Спасибо! Я должен U 1!, вот код на случай, если кому-то понадобится это сделать: - person technocrusaders.com; 07.04.2015