Absolute Path (ABSPATH) w WordPress nie działa
On 30 listopada, 2020 by adminObecnie pracuję nad małym zadaniem, które przechowuje informacje o wtyczce w bazie danych, ale mam problem z dołącz plik zawierający funkcje do uruchomienia zapytania.
Oto wiersz zawierający plik:
require_once(ABSPATH . "wp-admin/includes/upgrade.php");
ale po uruchomieniu kodu otrzymałem następujące informacje:
Ostrzeżenie:
require_once(ABSPATHwp-admin/includes/upgrade.php)
: nie udało się otworzyć strumienia: brak takiego pliku lub katalogu w/home/najam/dev/project1/wordpress/wp-admin/admin-insert.php
w wiersz 18
Dużo szukałem, ale nie mogę znaleźć coś przydatnego lub pomocnego.
EDYTUJ
Oto mój kod:
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 );`
Komentarze
Odpowiedź
insert.php
plik, który sam stworzyłem, właściwie jestem nowy w wordpress, chcę czy jest jakiś błąd, który popełniam? Właściwie chcę przechowywać informacje o formularzu wtyczki w bazie danych.
Twoje pytanie zawiera bardzo mało szczegółów, ale podejrzewam, że błąd, który popełniasz, ładuje się plik w taki sposób, że ładuje się poza kontekstem WordPressa lub w taki sposób, że ładowane są tylko części WordPressa.
Brak szczegółów w Twoim pytaniu – prawie całkowity brak kontekstu dla kodu – uniemożliwia podanie solidnej odpowiedzi, ale skłaniam się ku sugestii, że musisz uruchomić kod za pomocą AJAX API (nawet jeśli nie jest ściśle AJAX). Coś takiego: https://wordpress.stackexchange.com/a/108145/21376
Jeśli potrzebujesz lepszej odpowiedzi, musisz napisać lepsze pytanie. Kliknij przycisk „edytuj” pod swoim pytaniem i dodaj jak najwięcej szczegółów, ale zachowaj porządek.
Komentarze
- I ' nie martw się, że tabela bazy danych jest tworzona w wywołaniu AJAX fullstop
Answer
istnieje przyjemna funkcja WordPressa, która pomoże Ci za każdym razem, gdy nie chcesz sprawdzać brakujących znaków / „na swojej ścieżce.
trailingslashit
Twój przykład powinien być zapisany w zalecany sposób:
require_once( trailingslashit( ABSPATH ) . "wp-admin/includes/upgrade.php" );
używając tej funkcji, nigdy musisz umieścić znak „/” przed ścieżką „względną”, ponieważ ta funkcja zapewnia, że brakuje znaku „/”.
Dlatego stworzyliśmy tę funkcję w WordPress.
Odpowiedź
ABSPATH
będzie działać, musisz dołączyć plik wp-load. include "../../../wp-load.php";
Odpowiedź
Należy nie potrzebujesz /, ale spróbuj ukośnika na początku pliku / wp-admin
require_once( ABSPATH . "/wp-admin/includes/upgrade.php" );
Ale czy sprawdziłeś, czy / wp-admin / admin-insert. php istnieje?
Czy zdefiniowano ABSPATH? Dodaj poniższe, aby sprawdzić:
// Is ABSPATH defined? if ( !defined("ABSPATH") ) die("-1");
Czy próbujesz uruchomić to bez ładowania WP? Dodatkowo możesz wypróbować site_url () i pracować z tym.
Odpowiedź
ABSPATH powinno już zawierać końcowy ukośnik. Musisz dołączyć plik aktualizacji z głównego pliku wtyczki. Może musisz podłączyć się do akcji „plugins_loaded” lub „init”, a następnie wywołać metodę aktualizacji.
ABSPATH
nie jest zdefiniowany. Gdzie go używasz?ABSPATH
i przedwp-admin/
. Spróbuj tego:ABSPATH . '/wp-admin/
. Rozważ też to pytanie dotyczące StackOverflow WP ./wp-admin/admin-insert.php
? To nie jest w rdzeniu. Czy modyfikujesz rdzeń WordPressa?