Intereting Posts
Плагин, который обеспечивает shortcode? Установка multisite в домене с существующими установками wordpress для поддиректории Woocommerce: как удалить заголовок страницы на домашней странице или странице магазина, но не на страницах категорий Как я могу найти пользователя для беспокойства по отображаемому имени или его части? В архивах категорий и почтовых тегов не указаны сообщения из пользовательского типа сообщений пользовательский фильтр галереи с заголовком изображения в качестве названия ссылки? Как скрыть определенные ящики таксономии от пользователей в админе, добавить страницу сообщения? Получение пользовательских сообщений о таксономии на странице архива Как обновить постоянную ссылку «на лету»? Обзор сайта с помощью WordPress Спам в корневой папке WordPress Есть ли способ разрешить пользователям доступ к контенту до его публикации? Пользовательские типы сообщений и миниатюры Как переместить файлы темы WordPress в подпапку, не нарушая тему? Добавить категорию и имя пользователя в недавно обновленный список сообщений

Использование wpdb для подключения к отдельной базе данных

Я хочу подключить wpdb к другой базе данных. Как создать экземпляр и передать ему имя базы данных / имя пользователя / пароль?

благодаря

Да, это возможно.

Объект wpdb может использоваться для доступа к любой базе данных и запроса любой таблицы. Абсолютно не нужно быть связанным с WordPress, что очень интересно.

Преимуществом является возможность использовать все классы и функции get_results , такие как get_results и т. Д., Так что нет необходимости повторно изобретать колесо.

Вот как:

 $mydb = new wpdb('username','password','database','localhost'); $rows = $mydb->get_results("select Name from my_table"); echo "<ul>"; foreach ($rows as $obj) : echo "<li>".$obj->Name."</li>"; endforeach; echo "</ul>"; 

В WordPress легко подключиться ко второй базе данных, вы просто создаете новый экземпляр класса WPDB и используете его так же, как вы бы использовали стандартный экземпляр $ wpdb, который все мы знаем и любим.

Предполагая, что вторая база данных имеет ту же самую регистрационную информацию, что и основной WP, вы даже можете использовать предопределенные константы из wp-config.php, чтобы избежать жесткого кодирования данных входа.

 /** * Instantiate the wpdb class to connect to your second database, $database_name */ $second_db = new wpdb(DB_USER, DB_PASSWORD, $database_name, DB_HOST); /** * Use the new database object just like you would use $wpdb */ $results = $second_db->get_results($your_query); 

никто не сказал этого, поэтому я думал, что добавлю еще более простой способ.

если ваша дополнительная база данных имеет одинаковую информацию о пользователе / ​​проходе для доступа к ней в качестве базы данных WordPress, вы можете использовать имя базы данных до того, как имя таблицы будет выглядеть так

 $query = $wpdb->prepare('SELECT * FROM dbname.dbtable WHERE 1'); $result = $wpdb->get_results($query); 

Хотя они будут работать, вы потеряете возможность использовать «другие» пользовательские функции, такие как get_post_custom и wordpress. Простое решение

 $wpdb->select('database_name'); 

который изменяет базу данных по всей системе (mysql select_db). Метод database.table работает, если вы просто хотите сделать простой запрос, но если вы хотите получить доступ к другому блогу WordPress, вы можете использовать select. Вам просто нужно будет изменить его, когда вы закончите, или ваш блог может делать странные вещи.

Я еще не могу прокомментировать, но я хотел расширить ответ Вадима М. (что здорово).

Класс базы данных WP – это настраиваемая версия ezSQL Justin Vincent. Если вам нравится интерфейс, и вы хотите сделать сайт, который не основан на WordPress, вы можете проверить его: http://justinvincent.com/ezsql

Я боролся с использованием $wpdb для подключения ко второй базе данных блога с родительского сайта, который должен обновлять два блогов. Я использовал $wpdb->select($dbname, $dbh) чтобы выбрать вторую базу данных, но я все еще получал результаты от первой базы данных.

Я решил проблему, вызвав wp_cache_flush() чтобы очистить кэш WordPress до вызова функций WP во второй базе данных.