Hur man ansluter en annan databas i WordPress
Nyligen fick jag en fråga om hur man ansluter en databas till WordPress-webbplatsen. Först vill jag göra det tydligt att WordPress är byggt på ett sätt så att du kan köra valfritt antal webbplatser eller hantera valfri funktion från en enda databas. Jag tror att vi aldrig behöver ansluta mer än en databas till WordPress-webbplatsen.
Men ändå, om någon letar efter lösningen på att ansluta flera databaser finns det ett hack för det. Med hjälp av detta hack kan du använda metoderna i wpdb- klassen för att hämta poster från en annan databas. Detta hack tillåter dig inte att använda de kärnmetoder som tillhandahålls av WordPress i din andra databas. Funktionerna som get_option(), update_option (), wp_insert_post (), get_post_meta () kommer inte att vara tillgängliga för din andra databas.
I så fall kan användaren hämta data från alternativ, lägga upp tabeller med SQL-frågor med metoderna i wpdb-klass. Dessa metoder är get_var (), get_row (), get_col (), get_results (), etc.
Anslut en annan databas i WordPress
När du behöver ansluta en annan databas, skapa en instans av wpdb-klassen. Om du gör det får du tillgång till alla tillgängliga metoder i wpdb-klass. Användaren kan använda dessa klassmetoder direkt för att interagera med den externa databasen.
För att komma igång bör du ha referenser för en extern databas.
Som sagt måste den skapa en instans av wpdb-klass. Denna instans bör vara tillgänglig i hela WordPress-applikationen. För detta, lägg till koden nedan i functions.php
filen.
function connect_another_db() {
global $seconddb;
$seconddb = new wpdb(USERNAME, PASSWORD, DATABASE_NAME, HOSTNAME);
}
add_action('init', 'connect_another_db');
Se till att ersätta alla platshållare med de faktiska värdena. När du har lagt till ovanstående kod är du ansluten till en annan databas. Du kan använda denna andra instans enligt nedan:
global $seconddb;
$user_count = $seconddb->get_var( "SELECT COUNT(*) FROM $wpdb->users" );
echo "<p>User count is {$user_count}</p>";
Notera att ditt tabellprefix för en annan databas måste vara detsamma som den ursprungliga databasen. Om ditt tabellprefix är annorlunda måste du nämna prefixet uttryckligen enligt nedan:
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>";
Med hjälp av ovanstående hack kan du ansluta en annan databas och få poster från den på din WordPress-webbplats. Men jag rekommenderar att du inte använder flera databaser för din WordPress-webbplats. Försök att uppnå ditt mål från en enda databas.
relaterade artiklar
- Hur man bygger anpassad Elementor-widget
- Så här lägger du till kod efter Body Tag i WordPress
- Så här lägger du till anpassade slutpunkter till WordPress API