Функция для проверки состояния гравитационных форм WordPress - PullRequest
0 голосов
/ 04 февраля 2020

Я пытаюсь создать функцию, которая проверяет, есть ли в gform какие-либо записи, все записи или она пуста, и возвращает $ status в соответствии со статусом.

Я просмотрел записи и проверил, являются ли они infact отображается как пустая строка, если она пустая, но я получаю только частичное или пустое значение.

function set_form_status($form_id) {
    $entries = GFAPI::get_entries( $form_id, entry_search_criteria());
    $status = '';
    if (count($entries) > 0) {
        foreach($entries as $entry) {
            $keys = array_keys($entry);
            foreach($keys as $key) {
                if ($entry[$key] === '') {
                    $status = 'partial';
                }
                if ($entry[$key] !== '') {
                    $status = 'filled';
                }
            }
        }
    } else {
    $status = 'empty';
    }
    return $status;
}

Ответы [ 2 ]

0 голосов
/ 05 февраля 2020

Произвели некоторый рефакторинг и отладку вместе с коллегой, во всех формах были поля HTML, и все они возвращали пустую строку. Это рабочая версия.

function set_form_status($form) {
    define('FORM_EMPTY', 0);
    define('FORM_PARTIAL', 1);
    define('FORM_FILLED', 2);
    //checks if the form is my special kind of form
    if (is_eligible_form($form)) {
        $earlier_entry = get_last_entry($form['id']);
        if ($earlier_entry === false) {
            return STATUS_EMPTY;
        } else {
            foreach($form['fields'] as $key => $field) {
                if ($earlier_entry[$field->id] === '' && $field->type !== 'html') {
                    return FORM_PARTIAL;
                }
            }
        }
    }
    return FORM_FILLED;
}
0 голосов
/ 04 февраля 2020

Я бы предложил запустить его, как показано ниже, и посмотреть, что возвращается. Я удалил функцию entry_search_criteria, но кроме этого я просто повторяю ключ / значение.

Я обнаружил, что даже если я не использую покупку в форме, для нее созданы поля, и они пусты. Они не отображаются в представлении внутренней части, даже если я выбрал показать пустые поля. У вас может быть похожий сценарий.

function set_form_status($form_id) {
$entries = GFAPI::get_entries( $form_id);
$status = '';
if (count($entries) > 0) {
    foreach($entries as $entry) {
        $keys = array_keys($entry);
        foreach($keys as $key) {
            echo $key . ' - ' . $entry[$key] . '<br>';
            if ($entry[$key] === '') {
                $status = 'partial';
            }
            if ($entry[$key] !== '') {
                $status = 'filled';
            }
        }
    }
} else {
$status = 'empty';
}
return $status;
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...