В настоящее время я пытаюсь решить проблему на моем 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;
}