Создание условных операторов в одной и той же функции PHP - PullRequest
0 голосов
/ 05 апреля 2019

В настоящее время я пытаюсь решить проблему на моем WordPress-сайте с помощью Gravity Forms. Я пытаюсь заполнить раскрывающееся поле в 3 различных формах списком пользователей, зависящим от их «службы», которая указана в их метаданных. Например: Форма 1 показывает раскрывающийся список всех пользователей с «Сервисом 1», указанным в их метаданных, Форма 2 показывает раскрывающийся список всех пользователей с «Сервисом 2» в их метаданных.

Я нашел в Интернете некоторый код, который я поместил в мой файл Functions.php, который работает так, как я хочу, но только для одной формы за раз. Я попытался изменить соответствующие идентификаторы / meta_values, и каждый раз, когда я сохраняю его, обновляются правильные формы, а остальные стираются.

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

Мои знания PHP разумно ограничены, и я попытался их разделить, чтобы добавить несколько операторов «если», основанных на разных идентификаторах и $ metas, но пока безрезультатно. Кто-нибудь может взглянуть на код и увидеть очевидное решение?


Это код, который в настоящее время работает для 1 формы за раз.


add_filter("gform_pre_render", "populate_userdrop");

add_filter("gform_admin_pre_render", "populate_userdrop");

function populate_userdrop($form){

    if($form["id"] != 1)

    return $form;

    $items = array();
    $metas = get_users(array(
    'meta_value'     => 'Service 1',
));

if (is_array($metas))
{

foreach($metas as $meta)  $items[] = array("value" => $meta->display_name, "text" => $meta->display_name);
}
foreach($form["fields"] as &$field)
    if($field["id"] == 1){
    $field["choices"] = $items;
}

return $form;
}

Я пытался разрезать его вот так, но пока не могу заставить его работать


add_filter("gform_pre_render", "populate_userdrop");

add_filter("gform_admin_pre_render", "populate_userdrop");

function populate_userdrop($form){

    $metas = get_users(array(
    'meta_value'     => 'Service 1',
    ));

    $metas2 = get_users(array(
    'meta_value'     => 'Service 2',
    ));

    if($form["id"] != 1)

    return $form;

    $items = array();

if (is_array($metas))
{
foreach($metas as $meta)  $items[] = array("value" => $meta->display_name, "text" => $meta->display_name);
}

    if($form["id"] != 2)

     return $form;

    $items = array();

if (is_array($metas2))
{

foreach($metas2 as $meta)  $items[] = array("value" => $meta->display_name, "text" => $meta->display_name);
}   

foreach($form["fields"] as &$field)
    if($field["id"] == 1){
    $field["choices"] = $items;
    }   

return $form;
}
...