我使用Javascript直接从WooCommerce中的functions.php文件调用PHP文件(通过Wordpress),该文件正在使用' PHP XLSXWriter' GitHub上提供的代码。但是,我无法访问
$order = new WC_Order($order_id);
我是否可以使用
直接在WooCommerce后面访问此功能 require_once('/wp-content/plugins/woocommerce/includes/class-wc-order.php');
这是我正在调用的整个PHP代码:
$order_id = $_GET['order']; // pull the order info from the URL
$order = new WC_Order($order_id); // this crashes this entire function!
echo $order->shipping_city; // this then fails
echo $order->shipping_country; // and this fails too
// this code doesn't then execute...
$filename = "test.xlsx";
header('Content-disposition: attachment; filename="'.XLSXWriter::sanitize_filename($filename).'"');
header("Content-Type: application/vnd.openxmlformats-officedocument.spreadsheetml.sheet");
header('Content-Transfer-Encoding: binary');
header('Cache-Control: must-revalidate');
header('Pragma: public');
$rows = array(
array('Shipping Service Code', 'Company', 'Consignee Name', 'Address Line 1', 'Address Line 2', 'Address Line 3'),
array('PPS', '-', '-', '-', '-', '-'),
);
$writer = new XLSXWriter();
$writer->setAuthor('EXAMPLE AUTHOR');
foreach($rows as $row)
$writer->writeSheetRow('Sheet1', $row);
$writer->writeToStdOut();
exit(0);
我得到的错误是:
Fatal error: Class 'WC_Order' not found in C:\Webs\mysite.com\www\wp-admin\dhlgen.php on line 9
另一个想法是,如果可以直接在我的function.php文件中调用PHP代码。但是,我在meta_box按钮上有它,所以当我单击按钮本身时,它只保存顺序并且不执行我的PHP代码。原因我认为可能是因为XLSXWriter逻辑需要停止页面以便转储它不能执行的Excel电子表格文件,因此超时并继续保存页面。
谢谢。
答案 0 :(得分:3)
您应该可以通过添加wp-blog-header
文件来访问WordPress环境(包括WooCommerce):
require('path/to/wp-blog-header.php');
或者wp-load
文件:
require('path/to/wp-load.php');