Несколько сайтов, одни пользователи

Передо мной стоит такая задача – Сделать несколько сайтов с одной базой пользователей. Чтобы пользователь, регистрируясь на любом из сайтов, мог:
заходить через эту учётную запись на любой мой сайт
при входе на одном сайте автоматически входил на все
при переходе на другие сайты был залогенен на них

Подскажите как это сделать!

P.S. Извините если такая тема была, я не нашел!

Я лично подобную проблему еще не решал, но уважаемый Ю.Б. пару лет назад уже отвечал на подобный вопрос на одном из сайтов, посвященном WordPress. Тогда он ответил на него так ( процитирую фрагмент разбора той темы двухлетней давности):

[quote]Вопрос: Есть несколько сайтов сделанных на wordpress. Есть ли возможность сделать так, чтобы регистрация и база пользователей на всех сайтах была единой, т.е. общей для всех четырех сайтов?[/quote]
[quote]Ю.Б. Возможность есть, если все WP пользуются одной базой и отличаются только префиксами.[/quote]
[quote]Вопрос: Если сделать так как вы написали, то как их тогда объединить? Точнее, каким инструментом?[/quote]
[quote]Ю.Б.Посмотрите файл wp-settings.php. В нем после определения имен всех таблиц есть такой фрагмент:
if ( defined(‘CUSTOM_USER_TABLE’) )
$wpdb->users = CUSTOM_USER_TABLE;
if ( defined(‘CUSTOM_USER_META_TABLE’) )
$wpdb->usermeta = CUSTOM_USER_META_TABLE;

А это значит, что в wp-config.php можно прописать что-то типа
define(‘CUSTOM_USER_TABLE’, ‘all_users’);
define(‘CUSTOM_USER_META_TABLE’, ‘all_usermeta’);
и все словодавчики будут использовать одни и те же таблицы юзеров.

Имейте в виду, я это на практике не проверял.[/quote]

спасибо! но Это я уже читал! в новой версии wp такого помоему нет

Спасибо, но Это я уже читал! В новой версии wp такого по-моему нет

Ну, может быть, Ю.Б. и на этот раз поможет … 😐 На этом форуме вся надежда на него.

Я надеюсь на него!:D

такого помоему нет

То есть, потратить минуту на поиск CUSTOM_USER_TABLE в скриптах Вы не удосужились, решили ограничится интуитивными предположениями? Что ж, имеете полное право.

[quote=pavel2494]такого помоему нет

То есть, потратить минуту на поиск CUSTOM_USER_TABLE в скриптах Вы не удосужились, решили ограничится интуитивными предположениями? Что ж, имеете полное право.[/quote]
Я все файлы перерыл! Нету там такого – CUSTOM_USER_TABLE!:/

нашёл в wp-settings.php:

// Initialize multisite if enabled.
if ( is_multisite() ) {
require( ABSPATH . WPINC . ‘/ms-blogs.php’ );
require( ABSPATH . WPINC . ‘/ms-settings.php’ );
} elseif ( ! defined( ‘MULTISITE’ ) ) {
define( ‘MULTISITE’, false );
}

Что это такое? чтото с мультисайтовостью связано?

/wp-includes/wp-db.php:717

            if ( isset( $tables['users'] ) && defined( 'CUSTOM_USER_TABLE' ) )
                $tables['users'] = CUSTOM_USER_TABLE;

            if ( isset( $tables['usermeta'] ) && defined( 'CUSTOM_USER_META_TABLE' ) )
                $tables['usermeta'] = CUSTOM_USER_META_TABLE;

😛

В WP3 встроена поддержка мультисатовости, т.е. теперь WP сразу и обычный, и MU – два-в-одном.

/wp-includes/wp-db.php:717
            if ( isset( $tables['users'] ) && defined( 'CUSTOM_USER_TABLE' ) )
                $tables['users'] = CUSTOM_USER_TABLE;

            if ( isset( $tables['usermeta'] ) && defined( 'CUSTOM_USER_META_TABLE' ) )
                $tables['usermeta'] = CUSTOM_USER_META_TABLE;

😛

я вот так сделал:

            if ( isset( $tables['users'] ) && defined( 'CUSTOM_USER_TABLE', 'all_users' ) )
                $tables['users'] = CUSTOM_USER_TABLE;

            if ( isset( $tables['usermeta'] ) && defined( 'CUSTOM_USER_META_TABLE', 'all_usermeta' ) )
                $tables['usermeta'] = CUSTOM_USER_META_TABLE;

И теперь у меня выскакивают ошибки пр входе на сайт:

Warning: Wrong parameter count for defined() in /var/www/user2050/data/www/cyberland.ws/wp-includes/wp-db.php on line 717

Warning: Wrong parameter count for defined() in /var/www/user2050/data/www/cyberland.ws/wp-includes/wp-db.php on line 720

Warning: Cannot modify header information - headers already sent by (output started at /var/www/user2050/data/www/cyberland.ws/wp-includes/wp-db.php:717) in /var/www/user2050/data/www/cyberland.ws/wp-login.php on line 337

Warning: Cannot modify header information - headers already sent by (output started at /var/www/user2050/data/www/cyberland.ws/wp-includes/wp-db.php:717) in /var/www/user2050/data/www/cyberland.ws/wp-login.php on line 349

Warning: Cannot modify header information - headers already sent by (output started at /var/www/user2050/data/www/cyberland.ws/wp-includes/wp-db.php:717) in /var/www/user2050/data/www/cyberland.ws/wp-includes/pluggable.php on line 690

Warning: Cannot modify header information - headers already sent by (output started at /var/www/user2050/data/www/cyberland.ws/wp-includes/wp-db.php:717) in /var/www/user2050/data/www/cyberland.ws/wp-includes/pluggable.php on line 691

Warning: Cannot modify header information - headers already sent by (output started at /var/www/user2050/data/www/cyberland.ws/wp-includes/wp-db.php:717) in /var/www/user2050/data/www/cyberland.ws/wp-includes/pluggable.php on line 692

Warning: Cannot modify header information - headers already sent by (output started at /var/www/user2050/data/www/cyberland.ws/wp-includes/wp-db.php:717) in /var/www/user2050/data/www/cyberland.ws/wp-includes/pluggable.php on line 890

и на главной странице:

Warning: Wrong parameter count for defined() in /var/www/user2050/data/www/cyberland.ws/wp-includes/wp-db.php on line 717

Warning: Wrong parameter count for defined() in /var/www/user2050/data/www/cyberland.ws/wp-includes/wp-db.php on line 720

Может попробовать сделать вот так?

if ( isset( $tables['all_users'] ) && defined( 'CUSTOM_USER_TABLE' ) )
                $tables['users'] = CUSTOM_USER_TABLE;

            if ( isset( $tables['all_usermeta'] ) && defined( 'CUSTOM_USER_META_TABLE' ) )
                $tables['usermeta'] = CUSTOM_USER_META_TABLE;
я вот так сделал:

Где? Зачем? Написано же русским по белому:

в wp-config.php можно прописать что-то типа
define('CUSTOM_USER_TABLE', 'all_users');
define('CUSTOM_USER_META_TABLE', 'all_usermeta');
[quote=pavel2494]я вот так сделал:

Где? Зачем? Написано же русским по белому:

в wp-config.php можно прописать что-то типа
define('CUSTOM_USER_TABLE', 'all_users');
define('CUSTOM_USER_META_TABLE', 'all_usermeta');

[/quote]
Просто прописать? А где? В любом месте?

Это далеко не самый простой маневр. Пока не разберетесь что к чему, лучше не делайте. Тем более, что судя по всему, это только, так сказать, базовая часть, к которой придется еще что-нибудь дописывать. А тут "сунуть что попало куда попало" не катит. Нужно более-менее отчетливое понимание механизма работы движка.

Это далеко не самый простой маневр. Пока не разберетесь что к чему, лучше не делайте. Тем более, что судя по всему, это только, так сказать, базовая часть, к которой придется еще что-нибудь дописывать. А тут "сунуть что попало куда попало" не катит. Нужно более-менее отчетливое понимание механизма работы движка.

Я просто в php полный ноль! Поэтому и спрашиваю!:D Не подскажите более подробно как это делать?

Увы, не подскажу. Просто не умею так, как в кино, где по телефону рассказывают случайному человеку, как посадить Боинг-747. Кстати, полнейшая брехня. Мы с товарищем как-то пробовали по подсказкам сажать истребитель – чуть не разгромили тренажер 😀

Жаль! Буду на других форумах спрашивать! Спасибо вам и за это!:)

а не подскажите как настроить wordpress-subdomains.0.6.9?

В принципе
define(‘CUSTOM_USER_TABLE’, ‘all_users’);
define(‘CUSTOM_USER_META_TABLE’, ‘all_usermeta’);

Помог, теперь у меня оба сайта одна база, но увы к одному из сайтов, не могу войти с правами Администратора. Пожалуйста подскажите где именно нужно подправить.
http://codex.wordpress.org/Editing_wp-config.php#Custom_User_and_Usermeta_Tables
Все что было в кодексе я сделал.

Там трабла в том, что роли юзеров привязаны к префиксу таблиц. Посмотрите в usermeta, сразу увидите.

Ну я просто перекопировал, старую юзер мету, но увы тоже самое. Роль администратора не подключается… может все таки в другой таблице..

Помогите прошу

Проблема решена.
Тупо скопировал

ВЕСЬ
perfix2_usermeta
в perfix1_usermeta Спасибо з внимание

А может кто знает как это сделать без тупого копирования а??

Вот код который нужно добовлять в таблицу usermeta той базы, в который вы хотите чтобы лежали все ваши пользователи.

INSERT INTO `perfix1_usermeta` (`umeta_id`, `user_id`, `meta_key`, `meta_value`) VALUES
(11221, 1, ‘first_name’, ”),
(11222, 1, ‘last_name’, ”),
(11223, 1, ‘nickname’, ‘Old_datbase_nick’),
(11224, 1, ‘description’, ”),
(11225, 1, ‘rich_editing’, ‘true’),
(11226, 1, ‘comment_shortcuts’, ‘false’),
(11227, 1, ‘admin_color’, ‘fresh’),
(11228, 1, ‘use_ssl’, ‘0’),
(11229, 1, ‘show_admin_bar_front’, ‘true’),

Скорее всего важны последние две. пока не проверял если что выложу.

(11230, 1, ‘perfix2_capabilities’, ‘a:1:{s:13:"administrator";b:1;}’),
(11231, 1, ‘mperfix2_user_level’, ’10’);

P.S Люди если вас кто то о чем то спрашивает, то отвечайте. Бог даст каждому на хлеб. А те кто находит как то ответ сами то вспомните как вы тут лазали в поисках лучика надежды…

Anonymous
Отправить
Ответ на: