Abfrage von WP-Daten mit der WPDB-API von außerhalb von WordPress

Ich arbeite an einem Projekt mit WP, ein bisschen wie ein Plugin, aber nicht ganz eins.

Beim Versuch, eine Datei mit einigen benutzerdefinierten SQL-functionen in einer class in eine komplett andere Datei einzufügen, werde ich auf http://example.com/folder1/file.php/wp-admin/install.php umgeleitet http://example.com/folder1/file.php/wp-admin/install.php

Was besagt, dass ich WP bereits installiert habe und ich muss es deinstallieren, bevor ich es wieder installieren kann. Aber ich versuche nicht, WP zu installieren / neu zu installieren.

^ Das klingt irgendwie kompliziert, lassen Sie mich ein Beispiel geben:

Ich habe file1.php und file2.php . file1.php enthält viele SQL-functionen, die ich geschrieben habe, um auf die von WP verwendete file1.php zuzugreifen.

Und file2.php enthält eine class, die file1.php , so dass ich einige der SQL-functionen in der class verwenden kann.

Jetzt habe ich es zuerst mit dem Aufruf einiger SQL-functionen ( from file1.php ) in der class getestet und bin auf dieses Problem from file1.php . Nach einigem Debugging (Zeilen nacheinander entfernen) war das Problem die Zeile, die file1.php (die Datei mit allen darin enthaltenen SQL-functionen) file1.php

Aus irgendeinem Grund werde ich file1.php file2.php , wenn ich file1.php in file2.php , zu http://example.com/folder1/file2.php/wp-admin/install.php

Irgendwelche Ideen, warum das passiert und wie ich es beheben kann?

Vergessen, etwas zu erwähnen:

file1.php (mit allen SQL-functionen) enthält wp-config.php , um die DB-Informationen zu erhalten, die mit diesem Problem zusammenhängen könnten, oder?

Solutions Collecting From Web of "Abfrage von WP-Daten mit der WPDB-API von außerhalb von WordPress"

Vergessen, etwas zu erwähnen:

file1.php (mit allen SQL-functionen) enthält wp-config.php , um die DB-Informationen zu erhalten, die mit diesem Problem zusammenhängen könnten, oder?

Dollars zu Donuts, das ist dein Problem. Sie sollten niemals wp-config.php direkt wp-config.php .

Versuchen Sie auf WordPress-functionen von außerhalb WordPress zuzugreifen?

Bearbeiten

Um auf WordPress-functionen außerhalb der normalen WordPress-Umgebung wp-load.php , möchten Sie wp-load.php und nicht wp-config.php .

Grundbeispiel:

 < ?php require( 'path/to-wordpress/wp-load.php' ); ?> 

Bearbeiten 2

Ich muss nicht auf WordPress-functionen zugreifen. Nur die DB-Info (Host, Benutzer, Passwort). Die App, an der ich gerade arbeite, installiert einige zusätzliche Tabellen in der WP-database. Die App muss keine der Daten von WP berühren. IT verwendet nur die DB-Information, um auf seine eigenen Daten zuzugreifen, in seinen eigenen Tabellen, die nur die selbe database verwenden wie die, die WP benutzt. Ich würde es vorziehen, nur meine eigene DB in den Benutzern MySQL zu machen, aber die meisten Benutzer haben keine Erlaubnis, dies zu tun. Also muss ich die WP-database verwenden, aber meine eigenen Tabellen. Obwohl die App erfordert, dass WP installiert wird, muss ich auf keine der WP-functionen ATM zugreifen.

In diesem Fall müssen Sie WordPress nicht laden . Sie greifen einfach auf die database zu. Lass die Linie einfach weg.

Das Nötigste

Wenn Sie nur die Teile von WP laden möchten, die auf die database zugreifen, dann gibt es eine Konstante für Sie:

 define( 'SHORTINIT', true ) 

Kombinieren Sie das einfach mit einem benutzerdefinierten Abfrage-Var, so dass Sie es in Ihrer wp-config.php Datei wp-config.php / wp-config.php :

 if ( isset( $_GET['shortinit'] ) AND 'true' === $_GET['shortinit'] ) define( 'SHORTINIT', true ) 

Dies ermöglicht es Ihnen, ?shortinit=true an Ihren URl anzuhängen, um WP ohne Glanz und Glitzer auszuführen. Wenn Sie andere API-functionen benötigen, erweitern Sie einfach diesen Wrapper in Ihrer Konfigurationsdatei und fügen Sie auch die verantwortlichen Dateien hinzu.

Aber Sie müssen die Globals $wp, $wp_query, $wp_the_query selbst setzen. Das ist nicht zu schwer, wenn man sich einmal ansieht, wo und wie core dies tut.

Routing

Ich habe auch darüber geschrieben, wie Sie in dieser Antwort Regeln für das Nicht-WP-Umschreiben hinzufügen können.