Вопрос или проблема
Вопрос: Я использую WordPress с AffiliateWP и Gravity Forms на своем сайте. Я настроил форму с помощью Gravity Forms, где аффилиаты могут направлять клиентов заполнять заявку через свою уникальную реферальную ссылку. Этот процесс работает, как и ожидалось, с отслеживанием отправок формы, и рефералы отображаются в таблице рефералов AffiliateWP.
Проблема: В настоящее время в Портале аффилиатов AffiliateWP (с использованием расширения Портала аффилиатов AffiliateWP) аффилиаты могут видеть только ID реферала, Сумму, Описание, Статус и Дату в своей таблице “Рефералы”. Однако они не могут просмотреть конкретные данные о клиенте, который заполнил форму, такие как имя клиента и контактный номер.
Результаты: После реализации этого кода:
Поля не отображаются в портале аффилиата под “Рефералы”. Я проверил ID реферала и подтвердил, что он соответствует ID записи Gravity Forms. Данные клиента доступны в административной панели, но они все еще не отображаются для аффилиатов.
В административной панели под AffiliateWP > Рефералы я могу видеть эти данные, когда нажимаю на каждый реферал. Я хотел бы отображать имя клиента и номер телефона (вместе с другими деталями, если это возможно) непосредственно в портале аффилиатов, чтобы аффилиаты могли легко видеть, кого они направили.
Что я пробовал: Я добавил следующий код в functions.php, чтобы попытаться получить и отобразить эти поля:
// Подключение к AffiliateWP для добавления данных записи Gravity Forms в таблицу рефералов портала аффилиатов.
add_filter('affwp_referral_table_rows', 'custom_affiliatewp_display_gravity_forms_data', 10, 3);
function custom_affiliatewp_display_gravity_forms_data($rows, $referral, $affiliate_id) {
// Проверка, есть ли у реферала ID записи Gravity Forms
if (empty($referral->reference)) {
return $rows;
}
// Получение ID записи Gravity Forms из поля ссылки реферала
$entry_id = $referral->reference;
$form_id = 1; // ID формы
// Загрузка данных записи Gravity Forms
$entry = GFAPI::get_entry($entry_id);
if (is_wp_error($entry)) {
return $rows; // Остановить, если запись не найдена
}
// Определение полей для отображения
$customer_name = isset($entry['5']) ? esc_html($entry['5']) : 'Имя не найдено'; // ID поля имени
$customer_contact = isset($entry['7']) ? esc_html($entry['7']) : 'Контакт не найден'; // ID поля номера телефона
// Добавление новых строк для данных клиента в таблицу рефералов
$rows[] = array(
'label' => __('Имя клиента', 'affiliatewp'),
'value' => $customer_name
);
$rows[] = array(
'label' => __('Контакт клиента', 'affiliatewp'),
'value' => $customer_contact
);
return $rows;
}
Есть ли что-то, что я пропустил в коде, или конкретные разрешения, которые нужно установить, чтобы портал аффилиатов отображал эти данные? Я открыт к решению с помощью пользовательского кода или рекомендации плагина, если это поможет решить эту проблему. Буду очень признателен за любую помощь или советы!
Ответ или решение
Как отобразить данные записи Gravity Forms в портале партнеров AffiliateWP
Ваша задача — обеспечить отображение подробной информации о клиентах, которые заполнили форму Gravity Forms, в портале партнеров AffiliateWP. Это действительно важно для ваших партнеров, чтобы они могли легко отслеживать своих рефералов и эффективно управлять своими кампаниями. Давайте представим решение этой проблемы более детально.
Понимание текущей проблемы
Вы уже настроили систему, и записи о рефералах отображаются в таблице отчетов для партнеров, однако конкретные детали о клиентах, такие как имя и номер телефона, не выводятся. Код, который вы добавили в functions.php
, должен работать, но может потребоваться дополнительная отладка или уточнение.
Анализ кода и предложенные изменения
Ваш первоначальный код выглядит достаточно правильно, но давайте уточним некоторые аспекты для улучшения функциональности.
-
Проверка идентификатором формы: Убедитесь, что переменная
$form_id
соответствует фактическому ID вашей формы, так как вся информация о клиенте будет извлекаться из записи, связанной с этой формой. -
Корректное использование ключей записи: Убедитесь, что ID полей, используемых для извлечения имени и номера телефона, соответствуют тем, что определены в вашей форме Gravity Forms.
-
Вывод данных в таблице рефералов: Попробуем немного изменить логику отображения данных.
Вот улучшенный код, который может помочь решить вашу задачу:
// Подключение к AffiliateWP для добавления данных записи Gravity Forms в таблицу рефералов портала партнеров
add_filter('affwp_referral_table_rows', 'custom_affiliatewp_display_gravity_forms_data', 10, 3);
function custom_affiliatewp_display_gravity_forms_data($rows, $referral, $affiliate_id) {
// Убедимся, что у реферала есть идентификатор записи Gravity Forms
if (empty($referral->reference)) {
return $rows;
}
// Извлечение идентификатора записи Gravity Forms
$entry_id = $referral->reference;
// Получение данных записи Gravity Forms
$entry = GFAPI::get_entry($entry_id);
if (is_wp_error($entry) || empty($entry)) {
return $rows; // Прекращаем выполнение, если запись не найдена
}
// Извлечение необходимых полей
$customer_name = isset($entry[5]) ? esc_html($entry[5]) : __('No Name Found', 'affiliatewp'); // ID поля имени
$customer_contact = isset($entry[7]) ? esc_html($entry[7]) : __('No Contact Found', 'affiliatewp'); // ID поля телефона
// Добавление новых строк с деталями клиента в таблицу рефералов
$rows[] = array(
'label' => __('Customer Name', 'affiliatewp'),
'value' => $customer_name
);
$rows[] = array(
'label' => __('Customer Contact', 'affiliatewp'),
'value' => $customer_contact
);
return $rows;
}
Объяснение изменений
- Проверка на ошибки: Проверьте, получена ли запись и нет ли ошибок при вызове
GFAPI::get_entry()
. - Поля формы: Замените числа
5
и7
на реальные идентификаторы полей вашего Gravity Forms, если они отличаются. - Чистота кода: Убедитесь, что используется правильный синтаксис PHP. Измените
>
на>
, если вы копируете и вставляете код напрямую.
Дополнительные рекомендации
- Пермишн: Убедитесь, что ваши партнеры имеют соответствующие права для просмотра всех данных в портале.
- Логи и отладка: При помощи инструментов отладки в WordPress проверьте, правильно ли выполняется код. Логи ошибок могут помочь обнаружить проблемы.
Заключение
С помощью представленных решений вы сможете отображать рабочие данные о клиентах в портале партнеров AffiliateWP. Это позволит вашим партнерам получить более детальную информацию и усилить взаимодействие с их рефералами, что в конечном итоге повысит продуктивность. Каждый шаг требует точного выполнения, поэтому учитывайте детали кода и проводите тестирование после внедрения. Вы всегда можете обратиться к сообществу WordPress или поддержке Gravity Forms для получения дополнительной помощи.