Intereting Posts
Отображать чек, обозначенный таксономиями, как выпадающее меню Отображение сообщений, относящихся к другим сообщениям по таксономическому термину? Мне нужно какое-то направление, как иметь боковую панель, основанную на мета, а не на странице Использование памяти для масштабируемых запросов usermeta Пользовательский короткий код выполняется при сохранении страницы в wp-admin Ребенок и редактор Jetpack Функция WP_mail () не отправляет электронную почту в режиме Ajax Уведомление по электронной почте через WP_Mail в опубликованном настраиваемом типе сообщений Часть шаблона против боковой панели (разницы) Audio TAG Не используется MediaElement Когда страница загружается через ajax Как проверить роль пользователя без использования current_user_can () Крюк, когда загрузка медиа завершена, add_attachment не срабатывает У меня есть CPT с включенным menu_order, как я могу сделать уникальные значения menu_order, поэтому у него не будет дубликатов Извлеките ТОЛЬКО mp3s и установите переменную для использования в плейлисте, который называется шаблоном single.php? после миграции новые загруженные изображения не будут отображаться

Единый знак между двумя сайтами wordpress

У меня есть два веб-сайта wordpress Ex: abc.com и xyz.abc.com (оба находятся в WordPress).

Я хочу реализовать единый вход (SSO) на этом веб-сайте без использования многосайтовой функциональности.

Solutions Collecting From Web of "Единый знак между двумя сайтами wordpress"

Предположим, что у нас есть два веб-сайта, упомянутых в вашем вопросе – abc.com , xyz.abc.com , а их префиксы для таблиц – ab_ , xy_ .

Требования

Оба веб-сайта должны быть установлены в одном домене. Оба веб-сайта должны совместно использовать одну и ту же базу данных, используя разные префиксы таблиц. Оба сайта должны совместно использовать пользовательские таблицы (например, ab_users , ab_usermeta ).

Файлы wp-config.php для веб-сайтов

Файлы wp-config.php на обоих сайтах должны быть одинаковыми, за одним исключением: $table_prefix для abc.com сайта abc.com должно быть ab_ , а для xyz.abc.com должно быть xy_ . См. wp-config.php для abc.com , ниже:

 <?php /** * The base configurations of the WordPress. * * This file has the following configurations: MySQL settings, Table Prefix, * Secret Keys, WordPress Language, and ABSPATH. You can find more information * by visiting {@link http://codex.wordpress.org/Editing_wp-config.php Editing * wp-config.php} Codex page. You can get the MySQL settings from your web host. * * This file is used by the wp-config.php creation script during the * installation. You don't have to use the web site, you can just copy this file * to "wp-config.php" and fill in the values. * * @package WordPress */ // ** MySQL settings - You can get this info from your web host ** // /** The name of the database for WordPress */ define('DB_NAME', 'abc'); // change it, to match your installation /** MySQL database username */ define('DB_USER', 'abcadmin'); // change it, to match your installation /** MySQL database password */ define('DB_PASSWORD', 'database pasword here'); // change it, to match your installation /** MySQL hostname */ define('DB_HOST', 'localhost'); // change it, to match your installation /** Database Charset to use in creating database tables. */ define('DB_CHARSET', 'utf8'); /** The Database Collate type. Don't change this if in doubt. */ define('DB_COLLATE', ''); /**#@+ * Authentication Unique Keys and Salts. * * Change these to different unique phrases! * You can generate these using the {@link https://api.wordpress.org/secret-key/1.1/salt/ WordPress.org secret-key service} * You can change these at any point in time to invalidate all existing cookies. This will force all users to have to log in again. * * @since 2.6.0 */ define('AUTH_KEY', 'use generated value here'); define('SECURE_AUTH_KEY', 'use generated value here'); define('LOGGED_IN_KEY', 'use generated value here'); define('NONCE_KEY', 'use generated value here'); define('AUTH_SALT', 'use generated value here'); define('SECURE_AUTH_SALT', 'use generated value here'); define('LOGGED_IN_SALT', 'use generated value here'); define('NONCE_SALT', 'use generated value here'); define('COOKIE_DOMAIN', '.abc.com'); define('COOKIEPATH', '/'); define('COOKIEHASH', md5('abc.com')); /**#@-*/ /** * WordPress Database Table prefix. * * You can have multiple installations in one database if you give each a unique * prefix. Only numbers, letters, and underscores please! */ $table_prefix = 'ab_'; // in wp-config.php for xyz.abc.com change it to 'xy_' /* uncomment these two lines after successful website installation */ // define('CUSTOM_USER_TABLE', 'ab_users'); // define('CUSTOM_USER_META_TABLE', 'ab_usermeta'); /** * For developers: WordPress debugging mode. * * Change this to true to enable the display of notices during development. * It is strongly recommended that plugin and theme developers use WP_DEBUG * in their development environments. */ define('WP_DEBUG', false); /* That's all, stop editing! Happy blogging. */ /** Absolute path to the WordPress directory. */ if ( !defined('ABSPATH') ) define('ABSPATH', dirname(__FILE__) . '/'); /** Sets up WordPress vars and included files. */ require_once(ABSPATH . 'wp-settings.php'); 

Новые установки

Создайте пустую базу данных, которая будет использоваться обеими установками.

abc.com wp-config.php для abc.com в корень abc.com и выполните установку. Не заходите на свой сайт. Запишите имя пользователя и пароль администратора.

Drop wp-config.php для xyz.abc.com в корень xyz.abc.com и выполните установку. Не заходите на новый сайт.

На обоих сайтах создайте папку mu-plugins в /wp-content , если она не существует.

Сделайте fpw-sync-users.php со следующим содержимым:

 <?php /* Plugin Name: FPW Synchronize Shared Users Author: Frank P. Walentynowicz Author URI: https://fw2s.com Disclaimer: Use at your own risk. No warranty expressed or implied is provided. */ // Users synchronization on admin login function fpw_synchronize_admins_on_admin_login( $user_login, $user ) { if ( array_key_exists( 'administrator', $user->caps ) ) { global $wpdb; $site_prefix = $wpdb->prefix; $admins_only = true; $other_prefixes = array( 'xy_', ); $args = array( 'fields' => 'ID', ); if ( $admins_only ) $args[ 'role' ] = 'administrator'; $users = get_users( $args ); foreach ( $users as $id ) { $cap = get_user_meta( $id, $site_prefix . 'capabilities', true ); foreach ( $other_prefixes as $prefix ) update_user_meta( $id, $prefix . 'capabilities', $cap ); } } } add_action( 'wp_login', 'fpw_synchronize_admins_on_admin_login', 10, 2 ); // User synchronization on admin create user function fpw_synchronize_user_on_admin_register( $id ) { $me = wp_get_current_user(); if ( array_key_exists( 'administrator', $me->caps ) ) { $other_prefixes = array( 'xy_', ); $user = get_user_by( 'id', $id ); $cap = $user->caps; foreach ( $other_prefixes as $prefix ) update_user_meta( $id, $prefix . 'capabilities', $cap ); } } add_action( 'user_register', 'fpw_synchronize_user_on_admin_register', 10, 1 ); // User synchronization on profile update function fpw_synchronize_user_on_profile_update( $user_id ) { if ( current_user_can( 'edit_user', $user_id ) ) { $other_prefixes = array( 'xy_', ); $cap = array( $_POST[ 'role' ] => true, ); foreach ( $other_prefixes as $prefix ) update_user_meta( $user_id, $prefix . 'capabilities', $cap ); } } add_action('edit_user_profile_update', 'fpw_synchronize_user_on_profile_update'); 

fpw-sync-users.php файл fpw-sync-users.php папку /wp-content/mu-plugins обоих веб-сайтов.

Измените fpw-sync-users.php на xyz.abc.com , заменив каждое происхождение:

 $other_prefixes = array( 'xy_', ); 

с:

 $other_prefixes = array( 'ab_', ); 

Измените файлы wp-config.php для обоих веб-сайтов, раскомментируя эти два определения:

 // define('CUSTOM_USER_TABLE', 'ab_users'); // define('CUSTOM_USER_META_TABLE', 'ab_usermeta'); 

Все сделано. Войдите на сайт abc.com и перейдите на xyz.abc.com . Вы также войдете на этот сайт.

Вы можете отбрасывать xy_users и xy_usermeta из базы данных, потому что они больше не будут использоваться.

Существующие установки

Все становится немного сложнее, когда мы имеем дело с уже существующими веб-сайтами с отдельными базами данных.

Важно : перед созданием резервной копии файлов wp-config.php и баз данных обоих веб-сайтов!

Давайте используем базу данных сайта abc.com как общую базу данных. Мы должны экспортировать все таблицы (кроме users и usermeta ) из базы данных xyz.abc.com и импортировать их в abc.com данных abc.com .

Убедитесь, что префикс таблицы для базы данных xyz.abc.com отличается от префикса таблицы для базы данных abc.com . Если он отличается, вы можете пропустить следующую процедуру изменения префикса таблицы для xyz.abc.com.

Изменить префикс таблицы для xyz.abc.com : установить и активировать плагин WP Prefix Changer . Запустите его процедуру, чтобы изменить префикс. Отключите и удалите этот плагин. Теперь вы готовы для экспорта / импорта таблиц.

Экспортируйте таблицы из базы данных xyz.abc.com и импортируйте их в abc.com данных abc.com . Для этого вы можете использовать phpMyAdmin или любой другой доступный инструмент.

Измените wp-config.php (см. Пример wp-config.php из раздела « Новые установки ») для abc.com , добавив следующие определения:

 define('COOKIE_DOMAIN', '.abc.com'); define('COOKIEPATH', '/'); define('COOKIEHASH', md5('abc.com')); 

а также

 define('CUSTOM_USER_TABLE', 'ab_users'); define('CUSTOM_USER_META_TABLE', 'ab_usermeta'); 

Измените wp-config.php на xyz.abc.com , заменив связанные с базой данных определения, чтобы они соответствовали вашим общим значениям базы данных. Добавить определяет, вы только что добавили в wp-config.php abc.com . Замените ключи и хеши , чтобы их определить в wp-config.php для abc.com .

Добавьте (как описано в разделе « Новые установки ») fpw-sync-users.php в /wp-content/mu-plugins папки обоих веб-сайтов и соответствующим образом измените его префиксы.

Вот и все. Теперь у вас есть общие пользователи, которые могут использовать SSO.