Поддержка Проблемы и решения Интеграция своей БД с БД WordPress

  • Решено Dmitry Kohan

    (@dmay1989)


    Подскажите, пожалуйста, при интеграции своей существующей базы данных с базой данных WordPress лучше воспользоваться функцией dbDelta() и создавать свои собственные таблицы в базе данных WordPress или же создавать новые поля в уже существующих таблицах WordPress, таких как — posts, usermeta ?

    Для понимания процесса поясню — может быть вопрос покажется непонятным (тогда поправьте меня), но это мой первый проект на WordPress и с использованием CMS в принципе и суть его такова: пользователи, зарегистрировавшись в системе, через формы вводят исходные числовые и текстовые данные (4-6 параметров) и далее система на основе заранее созданных формул вычисляет результат и сохраняет его в базу данных по каждому пользователю, необходимо также предусмотреть вывод результатов по каждому пользователю в личном кабинете.
    Так же как и для исходных данных, вопрос и по результатам вычислений — результаты лучше сохранять в новых полях существующих таблиц WordPress (posts, usermeta) или же в созданных при помощи функции dbDelta() собственных таблицах ? Наведите на мысль, пожалуйста, как правильно начать реализовывать проект.

    Буду очень благодарен за любую консультацию

Просмотр 15 ответов — с 16 по 30 (всего 39)
  • @otshelnik-fm , @wpgear , спасибо за комментарии
    Но если смотреть в сторону использования плагина WP-Recall, то прежде чем читать документацию по нему хотел ещё спросить — готовый ЛК, созданный при помощи WP-Recall, позволяет работать с любыми таблицами DB — как с исходными типа usermeta, terms, termmeta, term_taxonomy, так и собственными таблицами добавленными в DB и выводить информацию из них ?
    И второй вопрос — если использовать плагин WP-Recall для вывода и работы ЛК, то для добавления собственных таблиц в DB, расчета параметров, сохранения данных в DB нужен всё равно свой собственный плагин или же всё это реализуется собственными правками в плагине WP-Recall ?

    WP-Recall данные полей профиля хранит в wp_usermeta
    с термами и таксономиями — это не относится к юзеру. Это от сущности «post_type» — что уже не сущность user.
    С ними вы можете работать через апи вордпресс.

    Но если вы зарегистрируете свой post_type и там таксономии — то форма публикации wp_recall сможет из фронтенда с ней работать. т.е. вы сможете добавлять и изменять данные через фронтенд форму публикации в нужный вам тип записи. Зарегистрированный через ВП register_post_type()
    А что же касается вывода из post_type — это прерогатива выбранной вами ВП темы. Плагин WP-Recall не выводит оттуда. Или же вам на основе ВП get_posts() нужно будет выбрать как нужно, сверстать и оформить в шорткод. Шорткод сможете вывести в произвольной вкладке ЛК — ссылку давал выше.

    то для добавления собственных таблиц в DB, расчета параметров, сохранения данных в DB нужен всё равно свой собственный плагин или же всё это реализуется собственными правками в плагине WP-Recall ?

    — таблицы создаете через db_delta — зачем плагину дублировать то, что отлично делает вордпресс.

    Получать данные из произвольных таблиц ВП не умеет удобно (а если касается сложных выборок с join — то ВП только голый SQL позволяет использовать для произвольных таблиц — получается громоздко). Но WP-Recall позволяет получать из произвольных таблиц через класс RCL_QUERY

    но только получать. Записывать в произвольные таблицы в БД придется через $wpdb от вордпресс. В плане записи в БД RCL_QUERY еще не доработан.

    Модератор Sergey Biryukov

    (@sergeybiryukov)

    Live and Learn

    с термами и таксономиями — это не относится к юзеру. Это от сущности «post_type» — что уже не сущность user.

    При необходимости ничего не мешает создать таксономию для пользователей:

    @otshelnik-fm , про функцию dbDelta() Вы написали:

    — таблицы создаете через db_delta — зачем плагину дублировать то, что отлично делает вордпресс.

    Вопрос — где и как (в каком файле) лучше использовать функцию dbDelta() ? В коде своего плагина (а если плагин не создаёшь)? Можно ли создавать произвольные таблицы при активации темы, используя хук after_switch_theme ?

    Тема должна заниматься визуальной составляющей. А функционал — прерогатива плагинов.
    На эту тему оч много инфы в интернете.

    (я не хочу создавать отдельный плагин для создания произвольных таблиц)
    Могу ли я создать произвольные таблицы функцией dbDelta() при активации своей темы, используя хук after_switch_theme в файле темы functions.php ?

    @otshelnik-fm , а могу ли я создавать произвольные таблицы при активации стороннего (не своего) плагина, к примеру WP-Recall ? Для этого в основном файле плагина нужно прописать хук активации плагина register_activation_hook( __FILE__, 'функция создания произвольных таблиц' ); ?

    @wpgear , спасибо за Ваш ответ. Резюме из моего поста https://ru.wordpress.org/support/topic/%d0%b8%d0%bd%d1%82%d0%b5%d0%b3%d1%80%d0%b0%d1%86%d0%b8%d1%8f-%d1%81%d0%b2%d0%be%d0%b5%d0%b9-%d0%b1%d0%b4-%d1%81-%d0%b1%d0%b4-wordpress/#post-12176079 верное на ваш взгляд или в него следует внести какие-либо правки ?

    По поводу вопросов, связанных с использованием функции dbDelta(), в интернете очень много информации о том КАК её использовать — синтаксис без апострофов, каждое поле с новой строчки, два пробела между PRIMARY KEY и определением ключа и пр., но нет информации ГДЕ её использовать — только в коде плагина или можно где-то ещё ?

    Модератор Юрий

    (@yube)

    ГДЕ её использовать — только в коде плагина или можно где-то ещё ?

    Где угодно в пределах её определенности.

    @yube , спасибо за ответ. Значит я могу создавать произвольные таблицы при активации стороннего (не своего) плагина, к примеру WP-Recall (привязав свою нужную функцию к хуку активации плагина register_activation_hook) ?

    Модератор Юрий

    (@yube)

    Значит я могу создавать произвольные таблицы при активации стороннего (не своего) плагина

    Вероятно, можете. Хотя смысл сего действа мне не ясен. Почему бы не создавать таблицы при активации того, где будет размещен код создания (и, вероятно, использования) таблиц?

    Коллега Dmitry Kohan!
    не побоюсь этого эпитета, выданного авансом.

    Если вы не предполагаете оформлять свой Проект в виде Плагина, а у меня закрались такие смутные сомнения, то вам вовсе не обязательно использовать для достижения своих Целей функцию dbDelta(). И тратить на это время.

    Никто не может вам помешать в качестве экспериментов просто воспользоваться таким простым, но удобным инструментом как: phpMyAdmin для управления Таблицами DB.
    Творите. Создавайте, Удаляйте созданное, Модифицируйте.

    @wpgear , по поводу:

    Если вы не предполагаете оформлять свой Проект в виде Плагина

    хочу добавить, что данный топик носит для меня также и концептуальный характер — пытаюсь получить правильную концепцию моего разрабатываемого первого проекта на WP, рассматривая все варианты и собственно, спрашивая вашего мнения. Поэтому прошу прощения, если задаю где-то несуразные вопросы. В данном варианте я вижу смысл использования плагина WP-Recall для оформления личного кабинета и своего плагина для работы со своими таблицами. Поправьте, если это в корне не верно: мой плагин создает и обрабатывает мои же таблицы, а плагин WP-Recall выводит эти таблички в ЛК пользователя

Просмотр 15 ответов — с 16 по 30 (всего 39)