Kuidas ühendada WordPressis veel üks andmebaas
Hiljuti sain küsimuse, kuidas veel üks andmebaas WordPressi veebisaidiga ühendada. Esiteks tahan teha selgeks, et WordPress on üles ehitatud nii, et saate käitada suvalist arvu saite või hallata funktsioone ühest andmebaasist. Usun, et meil pole kunagi vaja WordPressi veebisaidiga ühendada rohkem kui ühte andmebaasi.
Kuid ikkagi, kui keegi otsib lahendust mitme andmebaasi ühendamiseks, on selle jaoks üks häkkimine. Selle häkkimise abil saate kasutada klassi wpdb meetodeid kirjete hankimiseks teisest andmebaasist. See häkkimine ei luba teil oma teises andmebaasis kasutada WordPressi pakutavaid põhimeetodeid. Funktsioonid nagu get_option(), update_option (), wp_insert_post (), get_post_meta () pole teie teise andmebaasi jaoks ligipääsetavad.
Sel juhul saab kasutaja andmed tuua valikutest, postitada tabeleid, kasutades SQL-päringuid wpdb-klassi meetoditega. Need meetodid on get_var (), get_row (), get_col (), get_results () jne.
Ühendage WordPressi teine andmebaas
Kui peate ühendama teise andmebaasi, looge klassi wpdb eksemplar. Nii tehes pääsete juurde kõigile saadaolevatele wpdb-klassi meetoditele. Kasutaja saab neid klassimeetodeid kasutada otse välise andmebaasiga suhtlemiseks.
Alustamiseks peaksid teil olema välise andmebaasi mandaadid.
Nagu öeldud, peab see looma klassi wpdb. See eksemplar peaks olema saadaval kogu WordPressi rakenduses. Selleks lisage allolev kood functions.php
faili.
function connect_another_db() {
global $seconddb;
$seconddb = new wpdb(USERNAME, PASSWORD, DATABASE_NAME, HOSTNAME);
}
add_action('init', 'connect_another_db');
Asendage kõik kohahoidjad tegelike väärtustega. Ülaltoodud koodi lisamisel olete ühendatud teise andmebaasiga. Teist järgmist eksemplari saate kasutada järgmiselt:
global $seconddb;
$user_count = $seconddb->get_var( "SELECT COUNT(*) FROM $wpdb->users" );
echo "<p>User count is {$user_count}</p>";
Pange tähele, et teise andmebaasi tabeli eesliide peab olema sama mis algne andmebaas. Kui teie tabeli eesliide on erinev, peate mainima eesliite selgesõnaliselt, nagu allpool näidatud:
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>";
Ülaltoodud häkkide abil saate ühendada teise andmebaasi ja hankida sellest oma WordPressi veebisaidil kirjeid. Kuid soovitan oma WordPressi veebisaidil mitte kasutada mitut andmebaasi. Proovige oma eesmärki saavutada ainult ühtsest andmebaasist.