我正在创建一个插件,用于将数据从FTP服务器传输到本地服务器并更新wp数据库 using a cron job .
插件结构如下:
*插件文件夹
-
plugin mainfile.php(注册插件)
-
数据文件夹
-
class lib文件夹(有3个php类,class1.php,class2.php和class3.php)
现在,在mainfile.php中我使用全局$ wpdb引用$ wpdb,它按预期工作(创建数据库表) .
问题是当我尝试在lib文件夹中的任何类中使用global时引用$ wpdb它返回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');}`` 这里是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];`
``
1 回答
无法访问$ wpdb,因为该文件中没有对它进行任何引用 . 您需要将该文件包含在另一个已调用$ wpdb实例的文件中,例如mainfile.php . 或者通过执行类似于此处的操作将$ wpdb直接包含到该文件中... How to include $wpdb in wordpress plugin?
我的预感是,你没有调用任何库文件,所以他们根本不工作 .