Поддержка Проблемы и решения Смена названия таблицы

  • Приветствую всех!
    Подскажите, каким образом можно сменить название таблицы БД «wp_users» допустим на «accounts», так чтобы WP продолжало с ней работать?
    Изначально убрал префиксы «wp_» на «» в конфиге, переименовал таблицы в базе, работает без префикса, но вот со сменой имени — ступор.

Просмотр 11 ответов — с 1 по 11 (всего 11)
  • никак. по крайней мере, насколько я знаю.

    Модератор Yuri

    (@yube)

    
    define('CUSTOM_USER_TABLE', 'accounts');
    

    в wp-config.php

    https://codex.wordpress.org/Editing_wp-config.php

    Движок должен работать, а вот плагины и темы — отнюдь не факт. Это редко используемая и очень странная фича 🙂

    надо же, первый раз об этом слышу.

    Подскажите, каким образом можно сменить название таблицы БД «wp_users» допустим на «accounts», так чтобы WP продолжало с ней работать?
    Изначально убрал префиксы «wp_» на «» в конфиге, переименовал таблицы в базе, работает без префикса, но вот со сменой имени — ступор.

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

    • Ответ изменён 7 лет, 2 месяца назад пользователем SeVlad.

    Огромное спасибо! Даже на весьма специфичный вопрос откопали развернутый мануал. Буду тестировать, если кому интересно — то напишу, будут ли плагины/темы адекватно работать с такой системой.

    @sevlad да не вопрос! В моем случае — пытаюсь прикрутить регистрацию к игровому серверу (L2), но вот незадача.. сервер использует свои фиксированные наименования таблиц в БД (сервера по другим играм такой проблемы не имели). Потому и пробую зайти с другой стороны, заставив WP работать с имеющимися.
    Свой скрипт авторизации написать было бы разумней, но моими руками получится лишь дырка в безопасности.

    В моем случае — пытаюсь прикрутить регистрацию к игровому серверу (L2), но вот незадача.. сервер использует свои фиксированные наименования таблиц в БД (сервера по другим играм такой проблемы не имели). Потому и пробую зайти с другой стороны, заставив WP работать с имеющимися.

    Я признаться сперва подумал это очередная фантазия «безопастности» 🙂
    Но в случае интеграции лучше всё же иметь промежуточные таблицы или даже БД, чем подвергать риску работу движка.
    Если что — работа ВП с БД осуществляется с пом класса wpdb

    Модератор Yuri

    (@yube)

    пытаюсь прикрутить регистрацию к игровому серверу

    Я бы делал иначе. Я бы написал альтернативную функцию wp_authenticate() и что там еще потребуется. Думаю, именно для таких случаев (фактически это мост с другим движком) ее и вынести в замещаемые (pluggable).

    не понимаю смысла хранения в одной таблице разных данных.

    создали хук на регистрацию пользователя — повесили на него создание в таблице accounts новой игровой учетной записи. хук на удаление пользователя — удаляем в accouns юзера.

    зачем для этой операции приводить все к одному наименованию таблицы лично мне неясно.

    Такс.. Объясните пожалуйста.
    define(‘CUSTOM_USER_TABLE’, ‘accounts’); — сообщает WP, что таблица пользователей называется «accounts».
    Следом по сути я должен задать список новых используемых строк:
    DEFINE (‘CUSTOM_USER_META_TABLE’, ‘ID’);
    DEFINE (‘CUSTOM_USER_META_TABLE’, ‘login’);
    DEFINE (‘CUSTOM_USER_META_TABLE’, ‘password’);
    и дальше в этом духе, начиная с ID и заканчивая display_name. По логике ведь я ему должен объяснить по каждому пункту, допустим, что стока «pass» теперь называется «password», или ошибаюсь?
    Очень плохо, что там в двух словах описана эта возможность, а примера нет.

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

    Модератор Yuri

    (@yube)

    Следом по сути я должен задать список новых используемых строк:
    DEFINE (‘CUSTOM_USER_META_TABLE’, ‘ID’);
    DEFINE (‘CUSTOM_USER_META_TABLE’, ‘login’);
    DEFINE (‘CUSTOM_USER_META_TABLE’, ‘password’);

    Нет. CUSTOM_USER_META_TABLE — альтернативное имя таблицы {prefix}usermeta.

    Способа указать альтернативные имена полей нет. По крайней мере, простого.

    Извиняюсь, не строк, а столбцов*
    Впрочем вчера не посмотрел на разницу имен полей, а теперь оказалось, что и с этим проблемы.
    Сервер авторизации начал заплевывать ошибками, + шифрование паролей не совпадает, так просто не отделаюсь.
    Чем больше вчитываюсь в ваши варианты, тем больше понимаю, что в вопросе не компетентен. Проще будет заказать прокомментированный скрипт/форму регистрации, после составления внятного ТЗ.

    Еще раз благодарю вас всех за помощь.

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