Я создаю плагин для передачи данных с FTP-сервера на локальный сервер и обновления базы данных WP используя работу cron.
Структура плагина выглядит следующим образом:
* плагин папка
Теперь внутри 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]
Невозможно достичь $ wpdb, потому что в этом файле не было никаких ссылок на него. Вам также нужно включить этот файл в другой файл, в котором уже есть экземпляр $ wpdb, например, mainfile.php. Или включите $ wpdb непосредственно в этот файл, выполнив что-то вроде того, что можно найти здесь … Как включить $ wpdb в плагин WordPress?
Хотя я догадываюсь, что вы не вызываете ни один из библиотечных файлов, поэтому они вообще не работают.
Других решений пока нет …