Stellen Sie mit der WordPress-Datei wp-config eine Verbindung zur Datenbank her

8

Wie kann ich mit der Datei wp-config.php eine Verbindung zur Datenbank herstellen?

Ich versuche, ein Skript Wordpress-freundlicher zu gestalten, und ich muss eine Verbindung zur Datenbank herstellen, ohne das Skript als Plugin zu installieren.

Grundsätzlich habe ich auf meinem Skript

$host = "xxxxxxxxxxx"; //database location
$user = "xxxxxxxxxxx"; //database username
$pass = "xxxxxxxxxxx"; //database password
$db_name = "xxxxxxxx"; //database name

//Database Connection
$link = mysql_connect($host, $user, $pass);
mysql_select_db($db_name);

Das Skript kann nicht als Plugin installiert werden (was die Sache einfacher machen kann), daher muss ich mit der vorhandenen wp-config.php in der Installation eine Verbindung zur Datenbank herstellen ... Irgendwelche Ideen ???

Danke im Voraus

Bearbeiten und Klarstellung

1- Ich muss wp-config.php so wie es ist verwenden, keine Änderungen. 2- Das Skript befindet sich unter www.example.com/script/. 3- Es kann nicht als Plugin ausgeführt werden, da auf den Kern des Skripts öffentlich zugegriffen werden muss, ohne dass ein Anmeldebildschirm herumspringt. 4- Meine Frage ist im Grunde, wie man mit der Datei wp-config.php eine Verbindung zur Datenbank herstellt, indem man das obige Skript ändert.

user983248
quelle
1
Bitte erklären Sie, warum genau es als Plugin nicht möglich ist.
Kaiser
Da auf das Skript öffentlich zugegriffen werden muss, nicht auf der Administratorseite (es funktioniert nicht in Ordnern wie wp-content / plugins, da möglicherweise ein Anmeldebildschirm angezeigt wird).
user983248
Ich denke, Sie möchten Ihre Frage möglicherweise bearbeiten, um zu sagen, was Sie mit Ihrem Skript tun möchten. Als Plug-In ist so ziemlich alles möglich :)
Stephen Harris
IPN-Validierung für Paypal, siehe, es hat bei mir nicht funktioniert, als ich es aus dem Plugins-Ordner gemacht habe, aber ja aus einem Ordner außerhalb der gesamten Wordpress-Installation
user983248

Antworten:

10

Mit den Definitionen werden die Benutzersätze in wp-config definiert:

mysql_connect(DB_HOST, DB_USER, DB_PASSWORD);

BEARBEITEN : Da sich Ihr Skript außerhalb der Wordpress-Umgebung befindet, müssen Sie es initiieren, bevor Sie die Definitionen in wp-config verwenden.

require_once('./path/to/the/wp-config.php');
mysql_connect(DB_HOST, DB_USER, DB_PASSWORD);
akamaozu
quelle
1
Was Sie angegeben haben, dass es derzeit in Ihrer eigenen Frage nicht funktioniert. Ich werde nicht abstimmen, aber bitte stellen Sie sicher, dass Ihre Antwort wirklich funktioniert und zeigt, was das OP falsch macht. Vielen Dank! :) Übrigens: Willkommen bei WPSE und lass dich von diesem kleinen Druck nicht davon abhalten, andere Fragen zu beantworten. Antworten werden immer sehr geschätzt.
Kaiser
Die Verbindung zur Datenbank funktioniert. Das Problem in meiner Frage besteht darin, die Funktion, die sie aufruft, in eine externe Datei zu abstrahieren. Die Werte, die ich hier verwende, sind definierte Sätze, in wp-config.phpdenen Sie Wordpress einrichten. Haben Sie es zumindest versucht, bevor Sie davon ausgegangen sind, dass es nicht funktioniert?
Akamaozu
Dies ist ein bisschen von der ursprünglichen Frage
user983248
Hast du es tatsächlich versucht? Ich hatte genau das gleiche Problem, das Sie haben (Verbindung zur Datenbank herstellen), und ich habe es mithilfe der von wp-config festgelegten Definitionen gelöst (wie von Ihnen angefordert) . Die einzige Variable, die Sie benötigen, ist $ db_name, da sich der Rest dank bereits in der WP-Umgebung befindet wp-config.php. Solange die Wordpress-Umgebung geladen ist, haben Sie vollständigen Zugriff auf die Definitionen. Bearbeiten: Befindet sich Ihr Skript außerhalb der Wordpress-Umgebung?
Akamaozu
Ja, bitte lesen Sie meine letzte
Änderung
3

Sie können Ihr Skript zu einem Teil Ihres WordPress-Beitrags machen. Verwenden Sie einfach das $wpdbvon WordPress selbst bereitgestellte Objekt. Für das $wpdbObjekt ist die Datenbankverbindung bereits hergestellt, und Sie können damit alle Datenbankoperationen ausführen: Einfügen, Aktualisieren, Abfragen usw. Dies ist die bevorzugte Methode für DB-Aufgaben in WordPress, da Sie keine zusätzlichen Datenbankverbindungen öffnen müssen .

Hier ist ein einfaches Beispiel für das Abrufen zukünftiger Beiträge:

$posts = $wpdb->get_results("SELECT ID, post_title FROM wp_posts WHERE post_status = 'future' AND post_type='post' ORDER BY post_date ASC LIMIT 0,4");

Weitere Informationen finden Sie in diesem Artikel: http://wp.smashingmagazine.com/2011/09/21/interacting-with-the-wordpress-database/

obaranovsky
quelle
1
Wenn ich den Link aus Ihrer Antwort entferne, erhalte ich keine Informationen über die tatsächliche Lösung, abgesehen von einem Hinweis, $wpdbder grundlegende Datenbankaufgaben ausführen kann. Würde es Ihnen bitte etwas ausmachen, Ihre Antwort zu verbessern, um ein grundlegendes Beispiel zu zeigen? Vielen Dank.
Kaiser
Der Artikel dort enthält eine sehr detaillierte Beschreibung des $wpdbObjekts, daher wollte ich dort nicht viel Text ausschneiden und einfügen. Aber wenn Ihr Skript Teil von WordPress ist, können Sie das $wpdbObjekt verwenden, um die Datenbankabfragen wie $posts = $wpdb->get_results("SELECT ID, post_title FROM wp_posts WHERE post_status = 'future' AND post_type='post' ORDER BY post_date ASC LIMIT 0,4"); folgt auszuführen: Die Person, die die Frage gestellt hat, hat später klargestellt, dass sie es nicht zu einem Plugin machen möchte, also lautet meine Antwort jetzt weniger relevant, also habe ich beschlossen, es so zu lassen, wie es ist.
Obaranovsky
Bitte geben Sie immer alle benötigten Informationen in die Frage ein. Kommentare werden regelmäßig bereinigt. Wie auch immer, ich habe die andere Antwort und die Frage noch einmal gelesen und beide beantwortet. Inzwischen sieht die ursprüngliche Frage immer noch wie ein Versuch aus, eine Site zu hacken / zu infizieren, und die andere Antwort ist gegen die Best Practice in jeder einzelnen Zeile.
Kaiser
Dies ist meiner Meinung nach die bessere Lösung. Die Verwendung integrierter WordPress-Funktionen ist immer vorzuziehen. Nach dem Betrachten von $ wpdb Object sollte es klar werden.
user3135691