我有这个插件,我已经为完成订单上传图像而做了,但对于我的生活,我无法上传图片。 $ _FILES将永远不会返回,我不知道为什么。我希望在图片上传之前结账不会完成,这是否可能? *我被告知woocommerce使用ajax购物车
<?php
/*
@package UploadTest
@wordpress_plugin
Plugin Name: UploadTest
Plugin URI: null
Description:
Author: Goodship
Version: 0.0.2
Author URI: www.Goodship.co.za
*/
function add_image(){
$testLog = fopen(plugin_dir_path( __FILE__ )."testicle.txt","w") or exit ("Unable to open file!");
//if they DID upload a file...
if($_FILES['testUpload']['name']){
//if no errors...
if(!$_FILES['testUpload']['error']){
//now is the time to modify the future file name and validate the file
$new_file_name = strtolower($_FILES['testUpload']['tmp_name']); //rename file
if($_FILES['testUpload']['size'] > (1024000)) //can't be larger than 1 MB
{
$valid_file = false;
$message = 'Oops! Your file\'s size is to large.';
}
//if the file has passed the test
if($valid_file){
//move it to where we want it to be
move_uploaded_file($_FILES['testUpload']['tmp_name'], plugin_dir_path( __FILE__ ).'uploads/'.$new_file_name);
$message = 'Congratulations! Your file was accepted.';
}
}
//if there is an error...
else
{
//set that to be the returned message
$message = 'Ooops! Your upload triggered the following error: '.$_FILES['testUpload']['error'];
}
}
fwrite ($testLog ,$message);
fwrite ($testLog ,var_dump($_FILES));
fclose ($testLog);
}
add_action( 'woocommerce_checkout_update_order_meta', 'add_image');
function add_checkout_notice() {
echo '<input type="file" name="testUpload" />';
}
add_action( 'woocommerce_checkout_before_customer_details', 'add_checkout_notice');
?>
答案 0 :(得分:4)
您需要在您的子主题中调用以下函数。
function add_image($order_id){
// Do your code of upload image.
}
add_action( 'woocommerce_checkout_order_processed', 'add_image', 1, 1 );
答案 1 :(得分:2)
Woocommerce结帐将始终通过Ajax发生(我不确定它的版本是什么样的)
<img src="img/logo/logo-black.png" alt="logo" class="logo-black"/>
这是负责结帐操作的文件。
因此,除非您打算自行修改PLUGIN-DIR/woocommerce/assets/frontend/checkout.js
文件,否则无法从结帐页面上传文件。
如果您仍然希望从结帐页面上传文件,可以参考此answer。
答案 2 :(得分:1)
您是否看过高级自定义字段? https://www.advancedcustomfields.com/
您可以轻松实现您的目标。
看看这个https://www.advancedcustomfields.com/resources/acfupload_prefilter/