首页 文章

WordPress $ wpdb返回null

提问于
浏览
0

我正在创建一个插件,用于将数据从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 回答

  • 0

    无法访问$ wpdb,因为该文件中没有对它进行任何引用 . 您需要将该文件包含在另一个已调用$ wpdb实例的文件中,例如mainfile.php . 或者通过执行类似于此处的操作将$ wpdb直接包含到该文件中... How to include $wpdb in wordpress plugin?

    我的预感是,你没有调用任何库文件,所以他们根本不工作 .

相关问题