Anisimova32 02.02.2023 18:57

Как создать кастомный блок с использованием ACF (Advanced Custom Fields) в WordPress?

Здравствуйте!

У меня возник вопрос по созданию кастомного блока с использованием ACF (Advanced Custom Fields) в WordPress. Я хотел бы добавить специальный блок на свой сайт, где пользователи смогут указывать свои данные и эти данные будут сохраняться в базе данных.

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

Ниже приведу пример кода, который я пытался использовать:


function save_data_to_database() {
    if(isset($_POST['submit'])) {
        $name = $_POST['name'];
        $email = $_POST['email'];
        
        $data = array(
            'name' => $name,
            'email' => $email
        );
        
        global $wpdb;
        $table_name = $wpdb->prefix . 'custom_table';
        
        $wpdb->insert($table_name, $data);
    }
}
add_action('init', 'save_data_to_database');

Однако, данный код не работает, и я не понимаю, что я делаю неправильно. Буду очень благодарен, если вы сможете помочь мне разобраться в этом вопросе и поделиться рабочим решением.

Заранее спасибо!

Ответы:

dimamagistr30 02.02.2023 19:04
- убедитесь, что ваши поля формы имеют правильные атрибуты "name" и "submit". Проверьте также правильность наименования таблицы базы данных и соответствие полей данных.
OlgaS27 02.02.2023 19:27
Проверьте правильность использования хуков и событий в коде.
VKornilov42 02.02.2023 19:42
Спасибо, что обратился с своим вопросом. Я могу помочь разобраться с проблемой и поделиться рабочим решением для создания кастомного блока с использованием ACF и сохранения данных в базе данных. Первым шагом я предлагаю установить и активировать плагин Advanced Custom Fields (ACF), если вы еще этого не сделали. Этот плагин позволяет создавать кастомные поля для любых типов записей в WordPress. Далее создадим поле для ввода имени и электронной почты с помощью ACF. В административной панели WordPress перейдите на страницу "Пользовательские поля" в меню "Настройки ACF". Создайте новое поле с типом "Текст" и укажите метку "Имя". Повторите этот шаг, создав еще одно поле для электронной почты. Теперь, чтобы связать форму с ACF и сохранить данные в базе данных, вам понадобится следующий код:

function save_data_to_database() {
    if(isset($_POST['submit'])) {
        $name = $_POST['acf']['field_имя']; // Имя поля ACF
        $email = $_POST['acf']['field_почта']; // Поле почты ACF
        
        $data = array(
            'name' => $name,
            'email' => $email
        );
        
        global $wpdb;
        $table_name = $wpdb->prefix . 'custom_table';
        
        $wpdb->insert($table_name, $data);
    }
}
add_action('init', 'save_data_to_database');
В этом коде мы изменили способ получения данных из формы. Вместо использования $_POST['name'] и $_POST['email'], мы используем $_POST['acf']['field_имя'] и $_POST['acf']['field_почта'], где 'field_имя' и 'field_почта' - это идентификаторы полей ACF, которые вы создали ранее. Кроме того, не забудьте заменить 'custom_table' на имя вашей таблицы в базе данных, куда вы хотите сохранять данные. Теперь ваш код должен работать правильно и сохранять данные из формы в базу данных при отправке. Надеюсь, это решение поможет вам. Если у вас есть еще вопросы, не стесняйтесь задавать. Удачи!

Добавить ответ