• Решено inob

    (@inob)


    Здравствуйте. В разрабатываемом мной плагине в его админке необходимо сохранить форму, состоящую из 4 тектовых полей в отдельную таблицу в базе данных сайта. Могу сделать это с помощью отправки данных формы в ajax-запросе в функцию-обработчик плагина, в которой пропищу код сохранения и отправки ответа по его результату. А как это можно сделать средствами Вордпресса, то есть через него, а не обходя его механизм со стороны — так, как это делает плагин Contact Form 7 — пробовал в нем разобраться, но для меня он очень сложный и я быстро запутался — понял лишь, что выводя форму с полями для создания-редактирования данных формы, эти данные отправляются в Вордпресс и по всей видимости сохраняются как-то через него. Отследить этот процесс для меня сложно очень много кода и не знаю как точно все работает.

    Могли бы вы на примере простой формы (состоящей из одного текстового поля) объяснить, как правильно реализовать этот механизм сохранения полей формы через Вордпресс в отдельную таблицу базы данных (не в таблицы Вордпресса) для случаев:

    1. создания новой сущности (то есть на страницу загружается форма с пустым текстовым полем и в результате в отдельной таблице БД создаётся новая запись с данными, введенными в текстовое поле формы)
    2. редактирования уже созданной сущности — как правильно загрузить данные из таблицы БД в шаблон страницы редактирования и как обновить отредактированные данные в БД?

Просмотр 4 ответов — с 1 по 4 (всего 4)
  • Модератор Юрій

    (@yube)

    С базой все точно так же, как и без вордпресса, только вместо phpшных mysqli_* функций стоит использовать глобальный объект $wpdb.

    Матчасть:
    Class Reference/wpdb « WordPress Codex
    AJAX in Plugins « WordPress Codex

    Автор inob

    (@inob)

    Ок, спасибо, это тот способ, который я использую сейчас.

    А как будет реализовываться сохранение данных форм плагина, если он использует для их сохранения стандартные таблицы Вордпресса — как работает этот механизм в Conctact From 7: насколько я понял, в Contact Form 7 данные формы создания или редактирования контактоной формы отправлются по нажатию кнопки Сохранить методом POST (без AJAX) в файл http://example.com/wp-admin/admin.php, плюс к этому адресу добавляются GET-параметры: ?page=wpcf7&post=-1 для новых сущностей и при редактировании существующих ?page=wpcf7&post=id_записи_в_таблице_posts_в_которой_храняться_данные_редактируемой_контактоной_формы.

    Если до этого момента я понял все правильно, то что происходит дальше — как эти данные попадают в новую или существующую запись стандартной таблицы posts?

    И можно ли этот метод использовать, если плагин использует свои собственные таблицы в БД, а не стандартные таблицы Вордпресса? Если да, то, скажите, пожалуйста, что необходимо сделать, чтобы при работе по такой схеме данные сохранялись в собственных таблицах плагина?

    • Ответ изменён 5 лет назад пользователем inob.

    Вордпресс не настроен работать с сторонними таблицами (аля WP_Query). Используйте класс wpdb и вставляйте обычным sql запросом в сторонние таблицы.

    Выше вам дали ссылки верные — поймете как в ВП работает ajax и wpdb — вопросы про cf7 отпадут.

    А вообще для формы с 4-мя полями хватит и ВП кастомайзера https://codex.wordpress.org/Theme_Customization_API
    Не вижу проблем использовать его и для плагина.

    Автор inob

    (@inob)

    спасибо, благодарю вас за помощь

Просмотр 4 ответов — с 1 по 4 (всего 4)
  • Тема «Как сохранить данные из админки плагина» закрыта для новых ответов.