플러그인 없이 체크아웃 완료 전에 이미지를 업로드 할 수 있는 방법이 있나요?
주문이 완료되기 전에 이미지를 업로드하기 위해 만든 플러그인이 있습니다만, 아무리 해도 이미지를 업로드 할 수 없습니다.$_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');
?>
자녀 테마에서 아래 함수를 불러야 합니다.
function add_image($order_id){
// Do your code of upload image.
}
add_action( 'woocommerce_checkout_order_processed', 'add_image', 1, 1 );
Woocommerce 체크아웃은 항상 Ajax를 통해 이루어집니다(어떤 버전인지 모르겠습니다).
PLUGIN-DIR/woocommerce/assets/frontend/checkout.js
이것은 체크아웃 액션을 담당하는 파일입니다.
따라서 체크 아웃페이지에서 파일을 업로드하는 것은 다음 파일을 수정하는 것이 아니면 불가능합니다.checkout.js
직접 파일을 작성하세요.
그래도 체크아웃 페이지에서 파일을 업로드하고 싶은 경우 이 답변을 참조할 수 있습니다.
고급 커스텀 필드를 살펴보셨습니까?https://www.advancedcustomfields.com/
당신은 당신이 하고자 하는 것을 쉽게 달성할 수 있습니다.
https://www.advancedcustomfields.com/resources/acfupload_prefilter/ 를 봐 주세요.
언급URL : https://stackoverflow.com/questions/37025129/is-there-a-way-to-upload-an-image-before-checkout-completion-without-a-plugin
'programing' 카테고리의 다른 글
스프링 부츠에서 항아리와 전쟁의 차이점? (0) | 2023.04.06 |
---|---|
반응 전달 소품(하나 제외) (0) | 2023.04.06 |
Go에서 JSON 어레이를 해석하는 방법 (0) | 2023.04.06 |
버튼 클릭 한 번으로 반응 시 입력 비활성화 (0) | 2023.04.06 |
Wordpress REST API 느린 응답 시간 (0) | 2023.04.01 |