web-dev-qa-db-fra.com

Chemin absolu (ABSPATH) dans WordPress ne fonctionne pas

Je travaille actuellement sur une petite tâche qui stocke une information de plugin dans la base de données, mais je ne parviens pas à inclure le fichier contenant les fonctions permettant d'exécuter la requête.

Voici la ligne qui inclut le fichier:

require_once(ABSPATH . 'wp-admin/includes/upgrade.php');

mais j'ai le suivant quand je lance le code:

Avertissement: require_once(ABSPATHwp-admin/includes/upgrade.php): échec de l'ouverture du flux: Aucun fichier ou répertoire de ce type dans /home/najam/dev/project1/wordpress/wp-admin/admin-insert.php sur ligne 18

J'ai cherché beaucoup mais je ne trouve rien d'utile ou d'utile.

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 );`
3
Najam-us-Saqib

insert.php fichier que j'ai créé moi-même, en fait je suis nouveau sur wordpress, je veux qu'il y ait une erreur que je fais? En fait, je souhaite stocker des informations de formulaire de plug-in dans la base de données.

Votre question est très claire dans les détails, mais je suppose que l’erreur que vous faites est de charger un fichier de telle manière qu’il se charge en dehors du contexte de WordPress, ou de manière à ce que seules certaines parties de WordPress soient chargées.

Le manque de détails dans votre question - le manque presque complet de contexte pour le code - empêche de fournir une réponse solide, mais je suis plutôt enclin à vous suggérer d'exécuter votre code via le AJAX API (même si ce n’est pas strictement AJAX). Quelque chose comme ça: https://wordpress.stackexchange.com/a/108145/21376

Si vous voulez une meilleure réponse,vous devezécrivez une meilleure question. Veuillez cliquer sur le bouton "modifier" sous votre question et ajouter autant de détails que vous pouvez, mais gardez-le organisé.

3
s_ha_dum

il existe une fonction WordPress intéressante qui vous aide chaque fois que vous ne souhaitez pas vérifier l'absence de "/" sur votre chemin.

trailingslashit

votre exemple devrait être la manière recommandée écrite:

require_once( trailingslashit( ABSPATH ) . 'wp-admin/includes/upgrade.php' );

en utilisant cette fonction, vous ne devez jamais mettre "/" devant votre chemin "relatif", car cette fonction s'assure que "/" sera en cas d'absence.

c'est pourquoi nous avons créé cette fonction dans WordPress.

3
Gabb3

ABSPATH fonctionnera, vous devez inclure le fichier wp-load. include '../../../wp-load.php';

1
Hari Om Gupta

ABSPATH devrait déjà contenir un slash final. Vous devez inclure votre fichier de mise à niveau à partir du fichier du plugin principal. Peut-être devrez-vous vous connecter à l'action 'plugins_loaded' ou à 'init', puis appeler la méthode de mise à niveau.

0
Svetoslav Marinov

Vous ne devriez pas avoir besoin du/mais essayez une barre oblique au début du/wp-admin

require_once( ABSPATH . '/wp-admin/includes/upgrade.php' );

Mais avez-vous vérifié si le fichier /wp-admin/admin-insert.php existe?

L'ABSPATH est-il défini? Ajoutez ce qui suit pour vérifier:

// Is ABSPATH defined?
if ( !defined('ABSPATH') )
die('-1');

Aussi, essayez-vous de l'exécuter sans charger WP? De plus, vous pouvez essayer site_url () et travailler avec.

0
LPH