Absolutní cesta (ABSPATH) ve WordPressu nefunguje
On 30 listopadu, 2020 by adminMomentálně pracuji na malém úkolu, který ukládá informace o pluginu do databáze, ale mám problém týkající se zahrňte soubor, který má funkce pro spuštění dotazu.
Zde je řádek, který obsahuje soubor:
require_once(ABSPATH . "wp-admin/includes/upgrade.php");
ale při spuštění kódu jsem dostal následující:
Upozornění:
require_once(ABSPATHwp-admin/includes/upgrade.php)
: nepodařilo se otevřít stream: Žádný takový soubor nebo adresář v/home/najam/dev/project1/wordpress/wp-admin/admin-insert.php
na řádek 18
Hodně jsem hledal, ale nemohu najděte něco užitečného nebo užitečného.
UPRAVIT
Zde je můj kód:
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 );`
Komentáře
Odpověď
insert.php
soubor, který jsem vytvořil sám, ve skutečnosti jsem ve WordPressu nový, chci, aby tam byla nějaká chyba, kterou dělám? Ve skutečnosti chci do databáze uložit informace o formuláři pluginu.
Vaše otázka je velmi podrobná, ale mám podezření, že se chyba, kterou děláte, načítá soubor takovým způsobem, že se načte mimo kontext WordPressu, nebo takovým způsobem, že se načtou pouze části WordPressu.
Nedostatek podrobností ve vaší otázce – téměř úplný nedostatek kontextu pro kód – znemožňuje poskytnout spolehlivou odpověď, ale přikláním se k naznačení, že je třeba spustit váš kód pomocí AJAX API (i když to není striktně AJAX). Něco jako toto: https://wordpress.stackexchange.com/a/108145/21376
Pokud chcete lepší odpověď, musíte napsat lepší otázku. Klikněte na tlačítko „Upravit“ pod vaší otázkou a přidejte co nejvíce podrobností, ale udržujte je v pořádku.
Komentáře
- I ' d se docela obávat, že se vytvoří databázová tabulka uvnitř volání AJAX fullstop
Answer
existuje pěkná funkce WordPress, která vám pomůže, kdykoli nebudete chtít zkontrolovat chybějící „/“ na vaší cestě.
trailingslashit
váš příklad by měl být doporučeným způsobem:
require_once( trailingslashit( ABSPATH ) . "wp-admin/includes/upgrade.php" );
pomocí této funkce nikdy musíte umístit „/“ před svou „relativní“ cestu, protože tato funkce zajišťuje, že „/“ bude v případě, že chybí.
Proto jsme tuto funkci vytvořili ve WordPressu.
Odpověď
ABSPATH
bude fungovat, musíte zahrnout soubor wp-load. include "../../../wp-load.php";
Odpověď
Měli byste nepotřebujete /, ale zkuste lomítko na začátku / wp-admin
require_once( ABSPATH . "/wp-admin/includes/upgrade.php" );
Ale zkontrolovali jste, zda / wp-admin / admin-insert. existuje soubor php?
Je definován ABSPATH? Ke kontrole přidejte následující:
// Is ABSPATH defined? if ( !defined("ABSPATH") ) die("-1");
Pokoušíte se to spustit i bez načtení WP? Navíc můžete zkusit site_url () a pracovat s ním.
Odpovědět
ABSPATH by již měl obsahovat koncové lomítko. Musíte zahrnout soubor s upgradem ze souboru hlavního pluginu. Možná se budete muset připojit k akci „plugins_loaded“ nebo „init“ a poté zavolat metodu aktualizace.
ABSPATH
se nezdá být definován. Kde jej používáte?ABSPATH
a předwp-admin/
. Zkuste toto:ABSPATH . '/wp-admin/
. Zvažte také tuto otázku WP StackOverflow ./wp-admin/admin-insert.php
? Toto není v jádru. Upravujete jádro WordPress?