Il Percorso Assoluto (ABSPATH) in WordPress non funziona

14 feb 2014, 07:25:17
Visualizzazioni: 40.9K
Voti: 3

Sto attualmente lavorando su un'attività che memorizza le informazioni di un plugin nel database, ma ho problemi nell'includere il file che contiene le funzioni per eseguire la query.

Ecco la riga che include il file:

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

ma quando eseguo il codice ottengo il seguente errore:

Warning: require_once(ABSPATHwp-admin/includes/upgrade.php): failed to open stream: No such file or directory in /home/najam/dev/project1/wordpress/wp-admin/admin-insert.php on line 18

Ho cercato molto ma non sono riuscito a trovare nulla di utile o di aiuto.

MODIFICA

Ecco il mio codice:

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 );`
9
Commenti

Dove si trova questo codice?

s_ha_dum s_ha_dum
14 feb 2014 07:32:15

ABSPATH non sembra essere definito. Dove lo stai usando?

Seamus Leahy Seamus Leahy
14 feb 2014 07:34:00

Probabilmente hai dimenticato uno slash finale dopo ABSPATH e prima di wp-admin/. Prova questo: ABSPATH . '/wp-admin/. E considera anche questa domanda su StackOverflow riguardante WP.

Mayeenul Islam Mayeenul Islam
14 feb 2014 07:36:00

nessun successo.. :( con lo slash finale... @mayeenul

Najam-us-Saqib Najam-us-Saqib
14 feb 2014 07:37:17

Cos'è il file /wp-admin/admin-insert.php? Non fa parte del core. Stai modificando il core di WordPress?

Seamus Leahy Seamus Leahy
14 feb 2014 08:07:22

Il file insert.php l'ho creato io, in realtà sono nuovo su WordPress, volevo sapere se sto facendo qualche errore? In pratica voglio memorizzare le informazioni di un modulo di un plugin nel database.

Najam-us-Saqib Najam-us-Saqib
14 feb 2014 08:10:19

@Mayeenul Islam no, non è necessario lo slash finale dopo ABSPATH. La variabile ABSPATH contiene già lo slash finale...

Shail Shail
14 giu 2014 14:10:54

Basta fare echo della variabile ABSPATH per verificare cosa restituisce...

Shail Shail
14 giu 2014 14:12:10

Non dovresti fare aggiunte o modifiche all'interno della cartella wp-admin a meno che tu non stia contribuendo al WP Core. Dovresti creare un plugin (è semplice, un file PHP con un commento in alto nella cartella dei plugin), inserire il tuo codice lì dentro e utilizzare l'API AJAX e il sistema degli hook

Tom J Nowell Tom J Nowell
15 ago 2014 04:05:49
Mostra i restanti 4 commenti
Tutte le risposte alla domanda 5
1

Il file insert.php che ho creato personalmente, in realtà sono nuovo a WordPress, vorrei sapere se sto facendo qualche errore? In pratica voglio memorizzare le informazioni di un modulo di un plugin nel database.

La tua domanda è molto vaga nei dettagli ma sospetto che l'errore che stai commettendo sia quello di caricare un file in modo che venga caricato al di fuori del contesto di WordPress, o in modo tale che solo alcune parti di WordPress vengano caricate.

La mancanza di dettagli nella tua domanda - la quasi totale assenza di contesto per il codice - rende impossibile fornire una risposta precisa, ma sono propenso a suggerire che hai bisogno di eseguire il tuo codice tramite l'API AJAX (anche se non strettamente AJAX). Qualcosa come questo: https://wordpress.stackexchange.com/a/108145/21376

Se vuoi una risposta migliore, devi scrivere una domanda migliore. Per favore clicca il pulsante "modifica" sotto la tua domanda e aggiungi tutti i dettagli che puoi, ma mantienili organizzati.

14 feb 2014 16:58:24
Commenti

Sarei piuttosto preoccupato che una tabella del database venga creata all'interno di una chiamata AJAX, punto.

Tom J Nowell Tom J Nowell
15 ago 2014 04:04:08
0

esiste una comoda funzione di WordPress che ti aiuta ogni volta che non vuoi controllare la presenza del "/" nel tuo percorso.

trailingslashit

il tuo esempio dovrebbe essere scritto nel modo consigliato:

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

utilizzando questa funzione, non dovrai mai inserire "/" all'inizio del tuo percorso "relativo", poiché questa funzione si assicura che "/" sia presente nel caso mancasse.

questo è il motivo per cui abbiamo creato questa funzione in WordPress.

14 feb 2014 17:06:38
0

ABSPATH funzionerà se hai bisogno di includere il file wp-load. include '../../../wp-load.php';

25 ago 2016 14:03:34
0

Non dovresti aver bisogno della / ma prova a mettere uno slash all'inizio di /wp-admin

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

Ma hai verificato se il file /wp-admin/admin-insert.php esiste?

ABSPATH è definito? Aggiungi il seguente codice per verificare:

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

Inoltre, stai cercando di eseguire questo codice senza caricare WordPress? Potresti anche provare con site_url() e lavorare con quello.

14 feb 2014 08:26:40
0

ABSPATH dovrebbe già contenere una barra finale (/). Devi includere il tuo file di aggiornamento dal file principale del plugin. Potresti aver bisogno di agganciarti all'azione 'plugins_loaded' o a 'init' e poi chiamare il metodo di aggiornamento.

23 ott 2017 17:27:42