Calea Absolută (ABSPATH) în WordPress nu funcționează

14 feb. 2014, 07:25:17
Vizualizări: 40.9K
Voturi: 3

În prezent lucrez la o sarcină mică care stochează informațiile unui plugin în baza de date, dar am o problemă legată de includerea fișierului care conține funcțiile pentru execuția query-urilor.

Iată linia care include fișierul:

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

dar primesc următoarea eroare când rulez codul:

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

Am căutat mult dar nu am găsit nimic util sau de ajutor.

EDITARE

Iată codul meu:

global $wpdb;

// Numele tabelului cu prefixul WordPress
$table_name = $wpdb->prefix . 'table_form';

// Crearea structurii tabelului
$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
Comentarii

Unde se află acest cod?

s_ha_dum s_ha_dum
14 feb. 2014 07:32:15

ABSPATH nu pare să fie definit. Unde îl folosești?

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

Probabil ai omis o bară oblică la final după ABSPATH și înainte de wp-admin/. Încearcă asta: ABSPATH . '/wp-admin/. Și ia în considerare și această întrebare despre WP de pe StackOverflow.

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

niciun succes.. :( din cauza slash-ului de la final... @mayeenul

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

Ce este fișierul /wp-admin/admin-insert.php? Acesta nu face parte din nucleu. Modifici nucleul WordPress?

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

Fișierul insert.php pe care l-am creat eu, de fapt sunt nou în WordPress, vreau să știu dacă fac vreo greșeală? De fapt, vreau să stochez informațiile dintr-un formular de plugin în baza de date.

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

@Mayeenul Islam nu, nu este necesară o bară oblică la final după ABSPATH. Variabila ABSPATH conține deja bara oblică la final...

Shail Shail
14 iun. 2014 14:10:54

Doar afișează variabila ABSPATH și vei fi sigur ce returnează...

Shail Shail
14 iun. 2014 14:12:10

Nu ar trebui să faci adăugiri sau modificări în folderul wp-admin decât dacă contribui la WP Core. Ar trebui să creezi un plugin (este ușor, un fișier PHP cu un comentariu în partea de sus în folderul plugins) și să pui codul acolo, folosind API-ul AJAX și sistemul de hooks

Tom J Nowell Tom J Nowell
15 aug. 2014 04:05:49
Arată celelalte 4 comentarii
Toate răspunsurile la întrebare 5
1

Fișierul insert.php pe care l-am creat eu, de fapt sunt nou în WordPress, vreau să știu dacă fac vreo greșeală? De fapt, vreau să stochez informațiile dintr-un formular de plugin în baza de date.

Întrebarea ta este foarte generală, dar bănuiesc că greșeala pe care o faci este încărcarea unui fișier într-un mod care îl încarcă în afara contextului WordPress sau într-un mod în care doar părți din WordPress sunt încărcate.

Lipsa detaliilor în întrebarea ta – aproape complet lipsa de context pentru cod – face imposibil să ofer un răspuns solid, dar tind să sugerez că trebuie să rulezi codul prin API-ul AJAX (chiar dacă nu strict AJAX). Ceva de genul: https://wordpress.stackexchange.com/a/108145/21376

Dacă vrei un răspuns mai bun, trebuie neapărat să scrii o întrebare mai detaliată. Te rog apasă butonul "editare" sub întrebarea ta și adaugă câte detalii poți, dar păstrează-le organizate.

14 feb. 2014 16:58:24
Comentarii

Aș fi destul de îngrijorat că o tabelă de baze de date este creată în interiorul unui apel AJAX punct final

Tom J Nowell Tom J Nowell
15 aug. 2014 04:04:08
0

există o funcție utilă în WordPress care te ajută ori de câte ori nu vrei să verifici dacă lipsește "/" din calea ta.

trailingslashit

exemplul tău ar trebui să fie scris în modul recomandat:

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

folosind această funcție, nu trebuie să pui "/" în fața căii "relative", deoarece această funcție se asigură că "/" va fi adăugat în cazul în care lipsește.

acesta este motivul pentru care am creat această funcție în WordPress.

14 feb. 2014 17:06:38
0

ABSPATH va funcționa, trebuie să incluzi fișierul wp-load. include '../../../wp-load.php';

25 aug. 2016 14:03:34
0

Nu ar trebui să ai nevoie de /, dar încearcă să adaugi o bară oblică la începutul căii /wp-admin

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

Dar ai verificat dacă fișierul /wp-admin/admin-insert.php există?

Este ABSPATH definit? Adaugă următoarele pentru a verifica:

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

De asemenea, încerci să rulezi acest cod fără să încarci WordPress? În plus, ai putea încerca să folosești site_url() și să lucrezi cu aceasta.

14 feb. 2014 08:26:40
0

ABSPATH ar trebui să conțină deja o bară oblică la final. Trebuie să incluzi fișierul tău de actualizare din fișierul principal al plugin-ului. Poate că trebuie să te conectezi la acțiunea 'plugins_loaded' sau 'init' și apoi să apelezi metoda de actualizare.

23 oct. 2017 17:27:42