Как вывести ACF поля для создания новых в ЛК пользователя?

Ссылка скопирована
1 ответ

Здравствуйте. Столкнулся с необычной задачей. Нужно вывести поля ACF в режиме редактирования (как внутри админки WP), но на кастомную страницу пользователя.
Т.е. у пользователя будет Личный Кабинет. Он в него заходит, и может редактировать ACF поля. Это можно как-то реализовать?

Дополнительно:

Почитать документацию к АЦФ

Нужно решить такую задачу?

Опишите проблему, и специалист поможет с настройкой, исправлением ошибки или доработкой сайта. Подберём понятный план работ без лишней переписки.

Заказать помощь
Лучший ответ
1
Кирилл JS Ответ

ACF можно вывести на фронте в режиме редактирования через функцию acf_form(). Это штатный способ дать пользователю форму с ACF-полями вне админки. Главное — подключить ACF form head до вывода страницы и правильно ограничить доступ.

В шаблоне страницы личного кабинета до get_header() нужно вызвать:

acf_form_head();
get_header();

acf_form_head(); get_header();

А в нужном месте вывести форму:

if (is_user_logged_in()) {
    acf_form([
        'post_id' => 'user_' . get_current_user_id(),
        'field_groups' => [123],
        'submit_value' => 'Сохранить',
        'updated_message' => 'Данные сохранены',
    ]);
}

if (is_user_logged_in()) { acf_form([ 'post_id' => 'user_' . get_current_user_id(), 'field_groups' => [123], 'submit_value' => 'Сохранить', 'updated_message' => 'Данные сохранены', ]); }

Если пользователь должен редактировать поля своей записи, а не профиля, передавайте ID этой записи в post_id. Обязательно проверьте владельца:

if ((int) get_post_field('post_author', $post_id) !== get_current_user_id()) {
    wp_die('Нет доступа');
}

if ((int) get_post_field('post_author', $post_id) !== get_current_user_id()) { wp_die('Нет доступа'); }

Не выводите админские ACF-поля всем подряд. Создайте отдельную группу полей для фронта, где нет опасных настроек, служебных ID и полей, которые пользователь не должен менять.

Если нужно создавать новые записи из ЛК, используйте 'post_id' => 'new_post' и параметр new_post. Но для редактирования существующих данных лучше сначала построить понятную модель: пользователь → запись/профиль → разрешённые поля.

После сохранения можно обработать данные через acf/save_post: отправить уведомление, пересчитать статус анкеты или проверить обязательные поля. Только не забывайте, что фронтовая форма должна быть защищена от чужого редактирования, а не просто скрыта в интерфейсе.

Другие ответы (0)

Пока нет других ответов. Будьте первым, кто поможет автору.

Ответить на вопрос

комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *

Вам также может быть интересно