Absolute Path (ABSPATH) i WordPress fungerer ikke
On november 30, 2020 by adminJeg jobber for tiden med en liten oppgave som lagrer en plugin-informasjon i databasen, men jeg har problemer angående inkluderer filen som har funksjonene til å kjøre spørringen.
Her er linjen som inneholder filen:
require_once(ABSPATH . "wp-admin/includes/upgrade.php");
men jeg fikk følgende når jeg kjører koden:
Advarsel:
require_once(ABSPATHwp-admin/includes/upgrade.php)
: Kunne ikke åpne stream: Ingen slik fil eller katalog i/home/najam/dev/project1/wordpress/wp-admin/admin-insert.php
på linje 18
Jeg søkte mye, men kan ikke «t finn noe nyttig eller nyttig.
EDIT
Her er koden min:
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 );`
Kommentarer
Svar
insert.php
fil som jeg lagde selv, faktisk er jeg ny i wordpress, jeg vil at er det noen feil jeg gjør? Egentlig vil jeg lagre informasjon om et plugin-skjema i databasen.
Spørsmålet ditt er veldig detaljert, men jeg mistenker at feilen du gjør er å laste inn en fil på en slik måte som den lastes utenfor WordPress-konteksten, eller på en slik måte at bare deler av WordPress lastes inn.
Mangelen på detaljer i spørsmålet ditt – den nærmeste manglende konteksten for koden – gjør det umulig å gi et solid svar, men jeg lener meg mot å foreslå at du må kjøre koden din via AJAX API (selv om det ikke er strengt AJAX). Noe som dette: https://wordpress.stackexchange.com/a/108145/21376
Hvis du vil ha et bedre svar, du må skrive et bedre spørsmål. Klikk på «rediger» -knappen under spørsmålet ditt og legg til så mange detaljer du kan, men hold det organisert.
Kommentarer
- I ' Være ganske bekymret for at det blir opprettet en databasetabell i et AJAX-anrop fullstop
Svar
det er en fin WordPress-funksjon som hjelper deg når som helst du ikke vil sjekke om det mangler «/» på din vei.
trailingslashit
eksempelet ditt skal være den anbefalte måten å skrive:
require_once( trailingslashit( ABSPATH ) . "wp-admin/includes/upgrade.php" );
bruker denne funksjonen, du aldri må sette «/» foran din «relative» bane, da denne funksjonen sørger for at «/» vil være i tilfelle mangler.
dette er grunnen til at vi har opprettet den funksjonen i WordPress.
Svar
ABSPATH
fungerer, du må inkludere wp-load-fil. include "../../../wp-load.php";
Svar
Du bør trenger ikke / men prøv en skråstrek i starten av / wp-admin
require_once( ABSPATH . "/wp-admin/includes/upgrade.php" );
Men sjekket du om / wp-admin / admin-insert. php-fil eksisterer?
Er ABSPATH definert? Legg til følgende for å sjekke:
// Is ABSPATH defined? if ( !defined("ABSPATH") ) die("-1");
Prøver du også å kjøre dette uten å laste inn WP? I tillegg kan du prøve site_url () og jobbe med det.
Svar
ABSPATH bør allerede inneholde en skråstrek. Du må inkludere oppgraderingsfilen din fra hovedpluginens fil. Kanskje du må koble til «plugins_loaded» -handling eller «init» og deretter ringe oppgraderingsmetoden.
ABSPATH
ser ikke ut til å være definert. Hvor bruker du den?ABSPATH
og førwp-admin/
. Prøv dette:ABSPATH . '/wp-admin/
. Og vurder dette StackOverflow WP-spørsmålet også./wp-admin/admin-insert.php
? Dette er ikke kjernen. Endrer du WordPress-kjernen?