我正在创建一个插件,用于将数据从FTP服务器传输到本地服务器,并使用cron作业更新wp数据库。
插件结构如下:
*插件文件夹
现在,在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');}
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];
答案 0 :(得分:0)
$ wpdb无法访问,因为该文件中没有对它进行任何引用。您需要将该文件包含在另一个已调用$ wpdb实例的文件中,例如mainfile.php。或者通过执行类似于此处的操作将$ wpdb直接包含到该文件中... conventions
我的预感是你没有调用任何库文件,所以它们根本不工作。