Jak podłączyć inną bazę danych w WordPress
Ostatnio otrzymałem pytanie jak podłączyć jeszcze jedną bazę danych do serwisu WordPress. Po pierwsze, chcę wyjaśnić, że WordPress jest zbudowany w taki sposób, że możesz uruchamiać dowolną liczbę witryn lub zarządzać dowolną funkcjonalnością z jednej bazy danych. Uważam, że nigdy nie musimy łączyć więcej niż jednej bazy danych z witryną WordPress.
Ale nadal, jeśli ktoś szuka rozwiązania na łączenie wielu baz danych, jest na to jeden hack. Korzystając z tego hacka, możesz użyć metod klasy wpdb do pobrania rekordów z innej bazy danych. Ten hack nie pozwoli ci na użycie podstawowych metod dostarczanych przez WordPress w twojej drugiej bazie danych. Funkcje takie jak get_option(), update_option(), wp_insert_post(), get_post_meta() nie będą dostępne dla innej bazy danych.
W takim przypadku użytkownik może pobierać dane z opcji, publikować tabele za pomocą zapytań SQL z metodami klasy wpdb. Te metody to get_var(), get_row(), get_col(), get_results() itd.
Połącz inną bazę danych w WordPress
Gdy musisz podłączyć inną bazę danych, utwórz instancję klasy wpdb. W ten sposób uzyskujesz dostęp do wszystkich dostępnych metod klasy wpdb. Użytkownik może używać tych metod klas bezpośrednio do interakcji z zewnętrzną bazą danych.
Na początek powinieneś mieć poświadczenia zewnętrznej bazy danych.
Jak wspomniano, musi utworzyć instancję klasy wpdb. Ta instancja powinna być dostępna w całej aplikacji WordPress. W tym celu dodaj poniższy kod w functions.php
pliku.
function connect_another_db() {
global $seconddb;
$seconddb = new wpdb(USERNAME, PASSWORD, DATABASE_NAME, HOSTNAME);
}
add_action('init', 'connect_another_db');
Pamiętaj, aby zastąpić wszystkie symbole zastępcze rzeczywistymi wartościami. Po dodaniu powyższego kodu zostaniesz połączony z inną bazą danych. Możesz użyć tego drugiego wystąpienia, jak poniżej:
global $seconddb;
$user_count = $seconddb->get_var( "SELECT COUNT(*) FROM $wpdb->users" );
echo "<p>User count is {$user_count}</p>";
Pamiętaj, że prefiks tabeli innej bazy danych musi być taki sam, jak oryginalna baza danych. Jeśli Twój prefiks tabeli jest inny, musisz wyraźnie wspomnieć o prefiksie, jak pokazano poniżej:
global $seconddb;
$prefix = 'wp2_'; // here 'wp2' is the table prefix of second database
$user_count = $seconddb->get_var( "SELECT COUNT(*) FROM $prefix"."users" );
echo "<p>User count is {$user_count}</p>";
Korzystając z powyższych hacków, możesz podłączyć inną bazę danych i uzyskać z niej rekordy na swojej stronie WordPress. Ale radzę nie używać wielu baz danych dla swojej witryny WordPress. Staraj się osiągnąć swój cel tylko z jednej bazy danych.
Powiązane artykuły
- Jak zbudować niestandardowy widżet Elementora
- Jak dodać kod po tagu Body w WordPressie
- Jak dodać niestandardowe punkty końcowe do API WordPress?