Ich habe dieses Plugin, das ich erstellt habe, um ein Bild hochzuladen, bevor eine Bestellung abgeschlossen werden kann, aber für mein ganzes Leben kann ich das Bild nicht hochladen. $_FILES gibt immer nichts zurück, ich bin mir aber nicht sicher warum. Ich möchte, dass der Checkout erst abgeschlossen wird, wenn das Bild hochgeladen ist, ist das überhaupt möglich? *Mir wurde gesagt, dass WooCommerce Ajax für den Warenkorb verwendet
<?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');
?>
Senden Sie das Checkout-Formular über Ajax?
– Maha Dev
9. Mai 2016 um 4:38 Uhr
Verwenden Sie für den Checkout-Abschluss einfach JS, um zu überprüfen, ob das Eingabefeld des Bildes leer ist oder nicht. Wenn es leer ist, setzen Sie ein
disabled
auf einen Checkout-Abschluss-Button, sodass Sie den Checkout nicht abschließen können. Sobald Sie das Bild hochgeladen haben (ich gehe davon aus, dass JS hier irgendwie beteiligt sein muss), entfernen Sie einfach diedisabled
über den Checkout-Button. Warum es nicht hochgeladen wird, keine Ahnung…– dingo_d
9. Mai 2016 um 8:28 Uhr
@Maha Dev Die Kasse wird normal übermittelt, mit welchem Prozess auch immer Woocommerce verwendet
– Kapitän Dando
9. Mai 2016 um 9:41 Uhr
@dingo_d das Eingabefeld ist definitiv nicht leer, aber $_FILES ist aus irgendeinem Grund
– Kapitän Dando
9. Mai 2016 um 9:41 Uhr
Sie können die Frage aktualisieren, um aufzunehmen, dass woo-commerce Ajax verwendet, um den Warenkorb zu handhaben. sonst bekommst du keine richtige antwort
– David
10. Mai 2016 um 0:05 Uhr