Le chemin absolu (ABSPATH) dans WordPress ne fonctionne pas
On novembre 30, 2020 by adminJe travaille actuellement sur une petite tâche qui stocke les informations dun plugin dans la base de données, mais jai un problème concernant inclure le fichier qui a les fonctions pour exécuter la requête.
Voici la ligne qui inclut le fichier:
require_once(ABSPATH . "wp-admin/includes/upgrade.php");
mais jai obtenu ce qui suit lorsque jexécute le code:
Attention:
require_once(ABSPATHwp-admin/includes/upgrade.php)
: échec de louverture du flux: aucun fichier ou répertoire de ce type dans/home/najam/dev/project1/wordpress/wp-admin/admin-insert.php
sur ligne 18
Jai beaucoup cherché mais je ne peux pas « t trouver quelque chose dutile ou dutile.
MODIFIER
Voici mon 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 );`
Commentaires
Réponse
insert.php
fichier que jai créé moi-même, en fait je suis nouveau dans wordpress, je veux que y a-t-il une erreur que je fais? En fait, je souhaite stocker les informations dun formulaire de plugin dans la base de données.
Votre question est très légère sur les détails mais je soupçonne que lerreur que vous faites est de charger un fichier de telle manière quil se charge en dehors du contexte de WordPress, ou de telle sorte que seules des parties de WordPress soient chargées.
Le manque de détails dans votre question – le manque presque complet de contexte pour le code – rend impossible de fournir une réponse solide, mais je penche pour suggérer que vous devez exécuter votre code via le API AJAX (même si ce nest pas strictement AJAX). Quelque chose comme ceci: https://wordpress.stackexchange.com/a/108145/21376
Si vous voulez une meilleure réponse, vous devez rédiger une meilleure question. Veuillez cliquer sur le bouton « modifier » sous votre question et ajouter autant de détails que possible, mais gardez-le organisé.
Commentaires
- I ' d être assez inquiet quune table de base de données soit créée à lintérieur dun arrêt complet dappel AJAX
Réponse
il existe une fonction WordPress intéressante qui vous aide à chaque fois que vous ne voulez pas vérifier labsence de « / » sur votre chemin.
trailingslashit
votre exemple doit être écrit de la manière recommandée:
require_once( trailingslashit( ABSPATH ) . "wp-admin/includes/upgrade.php" );
en utilisant cette fonction, vous ne doivent mettre « / » devant votre chemin « relatif », car cette fonction sassure que « / » sera au cas où il manquerait.
cest pourquoi nous avons créé cette fonction dans WordPress.
Réponse
ABSPATH
fonctionnera dont vous aurez besoin pour inclure le fichier wp-load. include "../../../wp-load.php";
Réponse
Vous devriez pas besoin du / mais essayez une barre oblique au début de / wp-admin
require_once( ABSPATH . "/wp-admin/includes/upgrade.php" );
Mais avez-vous vérifié si / wp-admin / admin-insert. php existe-t-il?
LABSPATH est-il défini? Ajoutez ce qui suit pour vérifier:
// Is ABSPATH defined? if ( !defined("ABSPATH") ) die("-1");
En outre, essayez-vous dexécuter ceci sans charger WP? De plus, vous pouvez essayer site_url () et travailler avec.
Réponse
ABSPATH devrait déjà contenir une barre oblique finale. Vous devez inclure votre fichier de mise à jour à partir du fichier principal du plugin. Vous devez peut-être vous connecter à laction « plugins_loaded » ou « init », puis appeler la méthode de mise à niveau.
ABSPATH
ne semble pas être défini. Où lutilisez-vous?ABSPATH
et avantwp-admin/
. Essayez ceci:ABSPATH . '/wp-admin/
. Et considérez également cette question StackOverflow WP ./wp-admin/admin-insert.php
? Ce nest pas dans le noyau. Modifiez-vous le noyau WordPress?