php - WooCommerce:如何在订单中显示自定义文件(管理面板)
问题描述
我有一个 WooCommerce 商店,所有产品都在 iframe 中。当您单击“添加到购物车”按钮时,iframe 将发送一个文件,其中很可能包含一张照片。我需要在管理员中按订单详细信息显示此文件。我有 file_storage.php,其中注册了 POST 和 GET 方法
<?php
const FILES_SUBDIR = 'files/';
function idea_api_upload_file(WP_REST_Request $request) {
if (!empty($request->get_body())) {
$upload_dir = idea_get_upload_dir().FILES_SUBDIR;
if (!is_dir($upload_dir)) {
mkdir($upload_dir, 0777, true);
}
$id = time();
$filename = $upload_dir.$id.'.json';
$success = file_put_contents($filename, $request->get_body());
if ($success)
$response = new WP_REST_Response(array(
'id' => $id,
'link' => rest_url('idea/v1/get_file/'.$id),
'size' => filesize($filename)
));
else
$response = new WP_REST_Response(array('error' => 'Unable to store file'), 500);
} else {
$response = new WP_REST_Response(array('error' => 'Bad request'), 400);
}
/*if (get_option('v3d_cross_domain'))
$response->header('Access-Control-Allow-Origin', '*');*/
return $response;
}
function idea_api_get_file(WP_REST_Request $request) {
$id = intval($request->get_param('id'));
if (!empty($id)) {
$upload_dir = idea_get_upload_dir().FILES_SUBDIR;
$file = $upload_dir.$id.'.json';
if (is_file($file)) {
// hack to prevent excessive JSON encoding
header('Content-Type: application/json');
if (get_option('v3d_cross_domain'))
header('Access-Control-Allow-Origin: *');
print_r(file_get_contents($file));
exit();
} else
$response = new WP_REST_Response(array('error' => 'File not found'), 500);
} else {
$response = new WP_REST_Response(array('error' => 'Bad request'), 400);
}
/*if (get_option('v3d_cross_domain'))
$response->header('Access-Control-Allow-Origin', '*');*/
return $response;
}
add_action('rest_api_init', function () {
register_rest_route('idea/v1', '/upload_file', array(
'methods' => 'POST',
'callback' => 'idea_api_upload_file',
));
register_rest_route('idea/v1', '/get_file/(?P<id>\d+)', array(
'methods' => 'GET',
'callback' => 'idea_api_get_file',
'args' => array(
'id' => array(
'validate_callback' => function($param, $request, $key) {
return is_numeric($param);
}
),
),
));
});
所有文件都保存在“idea”文件夹中
function idea_get_upload_dir() {
$upload_dir = wp_upload_dir()['basedir'].'/idea/';
if (!is_dir($upload_dir)) {
mkdir($upload_dir, 0777, true);
}
return $upload_dir;
}
但我不明白如何按顺序放置文件(管理面板)。请帮帮我
解决方案
推荐阅读
- r - 将图例移出情节区域(素食套餐)
- python - Errno 2 从子文件夹导入 python 脚本时没有此类文件或目录错误
- python - 如何接受 GET 请求并将其转换为 JSON 对象?
- excel - 复制和粘贴行但不覆盖隐藏的行
- pytorch - 如何在 PyTorch Lightning 中编写多个训练设置
- c++ - CPP 中的模板类完全特化:“错误:聚合的类型不完整,无法定义”g++
- r - 创建双变量概率密度以从 R 中采样
- machine-learning - 没有数据增强的keras ImageDataGenerator?
- api - 如何将 stm32f3discovery API 传递给函数?
- latex - 在枚举/逐项中居中 LaTeX 表格