WordPress $ wpdb возвращает ноль

Я создаю плагин для передачи данных с FTP-сервера на локальный сервер и обновления базы данных WP используя работу cron.

Структура плагина выглядит следующим образом:

* плагин папка

  • плагин mainfile.php (для регистрации плагина)
  • Папка данных
  • папка class lib (которая имеет 3 класса php, class1.php, class2.php и class3.php)

Теперь внутри mainfile.php у меня есть ссылка на $ wpdb с использованием глобального $ wpdb, и он работает как положено (для создания таблиц базы данных).

Проблема в том, что когда я пытаюсь получить ссылку на $ wpdb, используя global внутри любого из классов в папке lib, он возвращает NULL.

не могли бы вы помочь 🙁

Вот код в основной плагин file.php

    require_once(ABSPATH . 'wp-admin/includes/upgrade.php');

function FTP_activate(){

global $wpdb;

$market_data_table = $wpdb->prefix . "marketData";

$market_data_table;

if($wpdb->get_var('SHOW TABLES LIKE ' . $market_data_table) !=
$market_data_table)
{
$sql =  'CREATE TABLE ' . $market_data_table . ' (
`PID` int(20) NOT NULL,
`field2` varchar(50) NOT NULL,
`field3` varchar(50) DEFAULT NULL,
`field4` varchar(20) DEFAULT NULL,
`field5` varchar(50) DEFAULT NULL,
`field6` varchar(15) DEFAULT NULL,
`
PRIMARY KEY (PID)
) ENGINE=InnoDB DEFAULT CHARSET=utf8';
}dbDelta($sql);$image_table = $wpdb->prefix . "marketPhotos";

if($wpdb->get_var('SHOW TABLES LIKE ' . $image_table) !=
$image_table)
{
$sql = 'CREATE TABLE ' .  $image_table . ' (
`ID` int(11) NOT NULL,
`PID` int(20) NOT NULL,
`PhotoNumber` int(11) DEFAULT NULL,
`Description` varchar(50) NOT NULL,
`FileName` varchar(50) DEFAULT NULL,
PRIMARY KEY (ID)
) ENGINE=InnoDB DEFAULT CHARSET=utf8';
}

dbDelta($sql);

}
register_activation_hook(__FILE__, 'FTP_activate');}

[/ NOEDIT] И вот часть кода в class1.php, с которой у меня возникли проблемы, находится внутри папки lib

    class FTPTransfer{
const FTP_CONNECTION_ERROR = 0;
const FTP_CONNECTION_SUCSS = 1;
const FTP_LOGIN_ERROR      = 0;
const FTP_LOGIN_SUCSS      = 1;

private $base_data_directory;
private $new_imgs = array();

private $ftp_server = "servername";
private $ftp_username = "username";
private $ftp_password = "password";

private $logger;public function __construct($base_path){

global $wpdb;

$this->base_data_directory = $base_path . "/FTPData";}

public function ftp_transfer(){var_dump($wpdb);

if(!$ftp = $this->ftpCheckConnection()){
exit();
}$dir = ftp_pwd($ftp);
$file_date = date('ymd');
$img_folder_date = date('Ymd');
$file_pattern = 'MktData'. $file_date . '_*.csv';
$img_folder_pattern = 'MktPhotos' . $img_folder_date . '*';$temp_file = 'temp.csv';

$img_folder = ftp_nlist($ftp, $dir.$img_folder_pattern);
$file = ftp_nlist($ftp, $dir.$file_pattern)[0];

[/ NOEDIT]

0

Решение

Невозможно достичь $ wpdb, потому что в этом файле не было никаких ссылок на него. Вам также нужно включить этот файл в другой файл, в котором уже есть экземпляр $ wpdb, например, mainfile.php. Или включите $ wpdb непосредственно в этот файл, выполнив что-то вроде того, что можно найти здесь … Как включить $ wpdb в плагин WordPress?

Хотя я догадываюсь, что вы не вызываете ни один из библиотечных файлов, поэтому они вообще не работают.

0

Другие решения

Других решений пока нет …

По вопросам рекламы ammmcru@yandex.ru
Adblock
detector