Absoluter Pfad (ABSPATH) in WordPress funktioniert nicht
On November 30, 2020 by adminIch arbeite derzeit an einer kleinen Aufgabe, die Plugin-Informationen in der Datenbank speichert, habe jedoch Probleme mit Fügen Sie die Datei hinzu, die über die Funktionen zum Ausführen der Abfrage verfügt.
Hier ist die Zeile, die die Datei enthält:
require_once(ABSPATH . "wp-admin/includes/upgrade.php");
, aber beim Ausführen des Codes wurde Folgendes angezeigt:
Warnung:
require_once(ABSPATHwp-admin/includes/upgrade.php)
: Stream konnte nicht geöffnet werden: Keine solche Datei oder kein solches Verzeichnis in/home/najam/dev/project1/wordpress/wp-admin/admin-insert.php
auf Zeile 18
Ich habe viel gesucht, kann aber nicht Finden Sie etwas Nützliches oder Nützliches.
BEARBEITEN
Hier ist mein Code:
global $wpdb; $table_name = $wpdb->prefix . "table_form"; $sql = "CREATE TABLE $table_name ( id int(11) NOT NULL AUTO_INCREMENT, rows int(11) DEFAULT NULL, cols int(11) DEFAULT NULL, UNIQUE KEY id (id) );"; require_once(ABSPATH . "wp-admin/includes/upgrade.php"); dbDelta( $sql );`
Kommentare
- Wo ist dieser Code?
-
ABSPATH
scheint nicht definiert zu sein. Wo verwenden Sie ihn? - Sie haben wahrscheinlich einen abschließenden Schrägstrich nach
ABSPATH
und vorwp-admin/
verpasst. Versuchen Sie Folgendes:ABSPATH . '/wp-admin/
. Berücksichtigen Sie auch diese StackOverflow WP-Frage . - Wie lautet die Datei
/wp-admin/admin-insert.php
? ? Dies ist nicht im Kern. Ändern Sie den WordPress-Kern? - @Mayeenul Islam Nein, nach ABSPATH ist kein abschließender Schrägstrich erforderlich. Die Variable ABSPATH enthält bereits einen abschließenden Schrägstrich …
Antwort
insert.php
Datei, die ich selbst erstellt habe, eigentlich bin ich neu in WordPress, ich möchte, dass es einen Fehler gibt, den ich mache? Eigentlich möchte ich Informationen zu Plugin-Formularen in der Datenbank speichern.
Ihre Frage ist sehr detailliert, aber ich vermute, dass der Fehler, den Sie machen, geladen wird Eine Datei so, dass sie außerhalb des Kontexts von WordPress geladen wird oder dass nur Teile von WordPress geladen werden.
Der Mangel an Details in Ihrer Frage – der nahezu vollständige Mangel an Kontext für den Code – macht es unmöglich, eine solide Antwort zu geben, aber ich neige dazu, vorzuschlagen, dass Sie Ihren Code über das Code ausführen müssen AJAX-API (auch wenn nicht ausschließlich AJAX). Etwa so: https://wordpress.stackexchange.com/a/108145/21376
Wenn Sie eine bessere Antwort wünschen, Sie müssen eine bessere Frage schreiben. Bitte klicken Sie auf die Schaltfläche „Bearbeiten“ unter Ihrer Frage und fügen Sie so viele Details wie möglich hinzu, aber halten Sie sie organisiert.
Kommentare
- I ' wäre ziemlich besorgt, dass eine Datenbanktabelle innerhalb eines AJAX-Aufrufs erstellt wird.
Antwort
Es gibt eine nette WordPress-Funktion, mit der Sie jederzeit nach fehlenden „/“ auf Ihrem Pfad suchen können.
trailingslashit
Ihr Beispiel sollte die empfohlene Schreibweise sein:
require_once( trailingslashit( ABSPATH ) . "wp-admin/includes/upgrade.php" );
Verwenden Sie diese Funktion nie Sie müssen „/“ vor Ihren „relativen“ Pfad setzen, da diese Funktion sicherstellt, dass „/“ für den Fall fehlt, dass es fehlt.
Aus diesem Grund haben wir diese Funktion in WordPress erstellt.
Antwort
ABSPATH
funktioniert, wenn Sie eine wp-load-Datei einschließen müssen. include "../../../wp-load.php";
Antwort
Sie sollten Ich brauche das / nicht, aber versuche einen Schrägstrich am Anfang des / wp-admin
require_once( ABSPATH . "/wp-admin/includes/upgrade.php" );
Aber hast du überprüft, ob / wp-admin / admin-insert. PHP-Datei existiert?
Ist der ABSPATH definiert? Fügen Sie zur Überprüfung Folgendes hinzu:
// Is ABSPATH defined? if ( !defined("ABSPATH") ) die("-1");
Versuchen Sie auch, dies auszuführen, ohne WP zu laden? Außerdem können Sie site_url () ausprobieren und damit arbeiten.
Antwort
ABSPATH sollte bereits einen abschließenden Schrägstrich enthalten. Sie müssen Ihre Upgrade-Datei aus der Datei des Haupt-Plugins einfügen. Möglicherweise müssen Sie sich in die Aktion „plugins_loaded“ oder „init“ einbinden und dann die Upgrade-Methode aufrufen.
Schreibe einen Kommentar