programing

플러그인 없이 체크아웃 완료 전에 이미지를 업로드 할 수 있는 방법이 있나요?

goodsources 2023. 4. 6. 21:36
반응형

플러그인 없이 체크아웃 완료 전에 이미지를 업로드 할 수 있는 방법이 있나요?

주문이 완료되기 전에 이미지를 업로드하기 위해 만든 플러그인이 있습니다만, 아무리 해도 이미지를 업로드 할 수 없습니다.$_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

반응형