Absoluut pad (ABSPATH) in WordPress werkt niet
Geplaatst op november 30, 2020 door adminIk ben momenteel bezig met een kleine taak waarbij informatie over een plug-in in de database wordt opgeslagen, maar ik heb een probleem met neem het bestand op dat de functies heeft om de zoekopdracht uit te voeren.
Hier is de regel die het bestand bevat:
require_once(ABSPATH . "wp-admin/includes/upgrade.php");
maar ik kreeg het volgende als ik de code uitvoer:
Waarschuwing:
require_once(ABSPATHwp-admin/includes/upgrade.php)
: kan stream niet openen: bestand of directory bestaat niet in/home/najam/dev/project1/wordpress/wp-admin/admin-insert.php
op regel 18
Ik heb veel gezocht, maar kan niet vind iets nuttigs of nuttigs.
EDIT
Hier is mijn 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 );`
Opmerkingen
Antwoord
insert.php
bestand dat ik zelf heb gemaakt, eigenlijk ben ik nieuw bij WordPress, ik wil dat is er een fout die ik maak? Eigenlijk wil ik de informatie van een plug-informulier in de database opslaan.
Uw vraag is zeer licht over de details, maar ik vermoed dat de fout die u maakt, wordt geladen een bestand op een zodanige manier dat het buiten de context van WordPress wordt geladen, of op een zodanige manier dat alleen delen van WordPress worden geladen.
Het gebrek aan detail in uw vraag – het bijna volledige gebrek aan context voor de code – maakt het onmogelijk om een solide antwoord te geven, maar ik neig ernaar te suggereren dat u uw code moet uitvoeren via de AJAX API (zelfs als het niet strikt AJAX is). Iets als dit: https://wordpress.stackexchange.com/a/108145/21376
Als je een beter antwoord wilt, je moet een betere vraag schrijven. Klik op de knop “bewerken” onder uw vraag en voeg zoveel mogelijk details toe, maar houd het overzichtelijk.
Opmerkingen
- I ' zou je behoorlijk zorgen moeten maken dat er een databasetabel wordt gemaakt binnen een AJAX-oproep fullstop
Antwoord
er is een leuke WordPress-functie die je helpt wanneer je “niet wilt controleren op ontbrekende” / “op je pad.
trailingslashit
je voorbeeld zou op de aanbevolen manier moeten zijn geschreven:
require_once( trailingslashit( ABSPATH ) . "wp-admin/includes/upgrade.php" );
als je deze functie gebruikt, zul je nooit moeten “/” voor uw “relatieve” pad plaatsen, aangezien deze functie ervoor zorgt dat “/” zal zijn voor het geval dat ontbreekt.
daarom hebben we die functie in WordPress gemaakt.
Answer
ABSPATH
zal werken, je moet het wp-load-bestand opnemen. include "../../../wp-load.php";
Antwoord
Je moet heb de / niet nodig, maar probeer een slash aan het begin van de / wp-admin
require_once( ABSPATH . "/wp-admin/includes/upgrade.php" );
Maar heb je gecontroleerd of / wp-admin / admin-insert. php-bestand bestaat?
Is het ABSPATH gedefinieerd? Voeg het volgende toe om te controleren:
// Is ABSPATH defined? if ( !defined("ABSPATH") ) die("-1");
Probeer je dit ook uit te voeren zonder WP te laden? Bovendien zou je site_url () kunnen proberen en ermee werken.
Answer
ABSPATH zou al een slash moeten bevatten. U moet uw upgradebestand uit het hoofdbestand van de plug-in opnemen. Misschien moet u “plugins_loaded” action of “init” gebruiken en dan de upgrade-methode aanroepen.
ABSPATH
lijkt niet te zijn gedefinieerd. Waar gebruik je deze code?ABSPATH
en vóórwp-admin/
. Probeer dit:ABSPATH . '/wp-admin/
. En overweeg ook deze StackOverflow WP-vraag ./wp-admin/admin-insert.php
? Dit zit niet in de kern. Zijn de WordPress-kern aan het aanpassen?