Абсолютный путь (ABSPATH) в WordPress не работает
Я работаю над небольшой задачей по сохранению информации плагина в базу данных, но у меня возникла проблема с подключением файла, содержащего функции для выполнения запросов.
Вот строка, которая подключает файл:
require_once(ABSPATH . 'wp-admin/includes/upgrade.php');
но при выполнении кода я получаю следующую ошибку:
Предупреждение:
require_once(ABSPATHwp-admin/includes/upgrade.php)
: не удалось открыть поток: Файл или каталог не существует в/home/najam/dev/project1/wordpress/wp-admin/admin-insert.php
на строке 18
Я много искал, но не смог найти ничего полезного или helpful.
РЕДАКТИРОВАНИЕ
Вот мой код:
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 );
Файл
insert.php
, который я создал самостоятельно. На самом деле я новичок в WordPress, хочу узнать, есть ли ошибки, которые я допускаю? Мне нужно сохранять данные из формы плагина в базе данных.
Ваш вопрос содержит очень мало деталей, но я подозреваю, что ошибка заключается в том, что вы загружаете файл вне контекста WordPress или таким образом, что загружаются только части WordPress.
Недостаток деталей в вашем вопросе — почти полное отсутствие контекста для кода — делает невозможным дать точный ответ, но я склоняюсь к тому, чтобы предложить вам запускать ваш код через AJAX API (даже если это не совсем AJAX). Например, как здесь: https://wordpress.stackexchange.com/a/108145/21376
Если вы хотите получить более точный ответ, вы должны задать более подробный вопрос. Пожалуйста, нажмите кнопку "редактировать" под вашим вопросом и добавьте как можно больше деталей, но сохраните структуру.

В WordPress есть удобная функция, которая помогает, когда вы не хотите проверять наличие отсутствующего "/" в вашем пути.
trailingslashit
Ваш пример должен быть написан рекомендуемым способом:
require_once( trailingslashit( ABSPATH ) . 'wp-admin/includes/upgrade.php' );
Используя эту функцию, вам больше не нужно добавлять "/" перед вашим "относительным" путем, так как эта функция гарантирует, что "/" будет добавлен, если он отсутствует.
Именно для этого мы создали эту функцию в WordPress.

Вам не должно понадобиться /, но попробуйте добавить слеш в начале /wp-admin
require_once( ABSPATH . '/wp-admin/includes/upgrade.php' );
Но вы проверили, существует ли файл /wp-admin/admin-insert.php?
Определена ли константа ABSPATH? Добавьте следующий код для проверки:
// Определена ли ABSPATH?
if ( !defined('ABSPATH') )
die('-1');
Также, вы пытаетесь запустить это без загрузки WordPress? Кроме того, можно попробовать использовать site_url() и работать с ней.
