Affichage de 1 message (sur 1 au total)
  • Auteur
    Messages
  • #516362
    Magalandes
    Participant
    Points: 13 pts

    Bonjour à tous !

    Je lance une bouteille à la mer car cela fait presque 1 semaine que je planche sur le sujet et même si je touche au but, j’ai encore un petit bug !

    Je cherche à ajouter à ma page de paiement deux champs permettant au client d’uploader une photo (l’un obligatoire et l’autre non). L’idée est, bien-sûr, de retrouver ces fichiers par la suite dans le récap de commande dans le back office.
    Le premier champ d’upload que j’ai codé dans mon « functions.php » marche bien donc je l’ai tout naturellement dupliqué, c’est là que ça se complique car mes connaissances de php/ajax/js se terminent ici.

    La 2e photo s’upload sans soucis mais dans le recap de commande, elle se fusionne avec la 1ere. Je pense que seule la 1ere est appelée dans les meta mais je ne sais pas où rajouter mon petit « 2 » pour dissocier les deux uploads. Pouvez-vous m’aider à ce sujet ? Pardonnez mon explications si je ne suis pas claire.

    Merci par avance !

    Voici le code des deux champs :

    /* ————– Ajout du champ fichier 1 au checkout */
    add_action( ‘woocommerce_after_order_notes’, ‘bbloomer_checkout_file_upload’ );
    function bbloomer_checkout_file_upload() {
    echo ‘
    <p class=form-row form-row-wide>
    <label for=appform>Merci de me fournir une photo de toi récente <abbr class=required title=required>*</abbr></label>
    <span class=woocommerce-input-wrapper>
    <input type=file id=appform name=appform accept=image/* required>
    <input type=hidden name=appform_field />
    </span>
    </p>’;
    wc_enqueue_js( “
    $( ‘#appform’ ).change( function() {
    if ( this.files.length ) {
    const file = this.files[0];
    const formData = new FormData();
    formData.append( ‘appform’, file );
    $.ajax({
    url: wc_checkout_params.ajax_url + ‘?action=appformupload’,
    type: ‘POST’,
    data: formData,
    contentType: false,
    enctype: ‘multipart/form-data’,
    processData: false,
    success: function ( response ) {
    $( ‘input[name=\”appform_field\”]’ ).val( response );
    }
    });
    }
    });
    ” );
    }
    add_action( ‘wp_ajax_appformupload’, ‘bbloomer_appformupload’ );
    add_action( ‘wp_ajax_nopriv_appformupload’, ‘bbloomer_appformupload’ );
    function bbloomer_appformupload() {
    global $wpdb;
    $uploads_dir = wp_upload_dir();
    if ( isset( $_FILES[‘appform’] ) ) {
    if ( $upload = wp_upload_bits( $_FILES[‘appform’][‘name’], null, file_get_contents( $_FILES[‘appform’][‘tmp_name’] ) ) ) {
    echo $upload[‘url’];
    }
    }
    die;
    }
    add_action( ‘woocommerce_checkout_process’, ‘bbloomer_validate_new_checkout_field’ );
    function bbloomer_validate_new_checkout_field() {
    if ( empty( $_POST[‘appform_field’] ) ) {
    wc_add_notice( ‘Please upload your Application Form’, ‘error’ );
    }
    }
    add_action( ‘woocommerce_checkout_update_order_meta’, ‘bbloomer_save_new_checkout_field’ );
    function bbloomer_save_new_checkout_field( $order_id ) {
    if ( ! empty( $_POST[‘appform_field’] ) ) {
    update_post_meta( $order_id, ‘_application’, $_POST[‘appform_field’] );
    }
    }
    add_action( ‘woocommerce_admin_order_data_after_billing_address’, ‘bbloomer_show_new_checkout_field_order’, 10, 1 );
    function bbloomer_show_new_checkout_field_order( $order ) {
    $order_id = $order->get_id();
    if ( get_post_meta( $order_id, ‘_application’, true ) ) echo ‘<p><strong>Photo consultant.e :</strong> <a href=‘ . get_post_meta( $order_id, ‘_application’, true ) . ‘ target=_blank>’ . get_post_meta( $order_id, ‘_application’, true ) . ‘</a></p>’;
    }
    add_action( ‘woocommerce_email_after_order_table’, ‘bbloomer_show_new_checkout_field_emails’, 20, 4 );
    function bbloomer_show_new_checkout_field_emails( $order, $sent_to_admin, $plain_text, $email ) {
    if ( $sent_to_admin && get_post_meta( $order->get_id(), ‘_application’, true ) ) echo ‘<p><strong>Photo consultant.e :</strong> ‘ . get_post_meta( $order->get_id(), ‘_application’, true ) . ‘</p>’;
    }
    /* ————– Ajout du champ fichier 2 au checkout */
    add_action( ‘woocommerce_after_order_notes’, ‘bbloomer_checkout_file_upload2’ );
    function bbloomer_checkout_file_upload2() {
    echo ‘
    <p class=form-row form-row-wide>
    <label for=appform2>Si tu as choisi une guidance sentimentale, merci de me fournir une photo de ton compagnon/compagne</label>
    <span class=woocommerce-input-wrapper>
    <input type=file id=appform2 name=appform2 accept=image/*>
    <input type=hidden name=appform2_field />
    </span>
    </p>’;
    wc_enqueue_js( “
    $( ‘#appform2’ ).change( function() {
    if ( this.files.length ) {
    const file = this.files[0];
    const formData = new FormData();
    formData.append( ‘appform2’, file );
    $.ajax({
    url: wc_checkout_params.ajax_url + ‘?action=appform2upload’,
    type: ‘POST’,
    data: formData,
    contentType: false,
    enctype: ‘multipart/form-data’,
    processData: false,
    success: function ( response2 ) {
    $( ‘input[name=\”appform2_field\”]’ ).val( response2 );
    }
    });
    }
    });
    ” );
    }
    add_action( ‘wp_ajax_appformupload’, ‘bbloomer_appformupload2’ );
    add_action( ‘wp_ajax_nopriv_appformupload’, ‘bbloomer_appformupload2’ );
    function bbloomer_appformupload2() {
    global $wpdb;
    $uploads_dir = wp_upload_dir();
    if ( isset( $_FILES[‘appform2’] ) ) {
    if ( $upload = wp_upload_bits( $_FILES[‘appform2’][‘name’], null, file_get_contents( $_FILES[‘appform2’][‘tmp_name’] ) ) ) {
    echo $upload[‘url’];
    }
    }
    die;
    }
    add_action( ‘woocommerce_checkout_update_order_meta’, ‘bbloomer_save_new_checkout_field2’ );
    function bbloomer_save_new_checkout_field2( $order_id ) {
    if ( ! empty( $_POST[‘appform2_field’] ) ) {
    update_post_meta( $order_id, ‘_application’, $_POST[‘appform2_field’] );
    }
    }
    add_action( ‘woocommerce_admin_order_data_after_billing_address’, ‘bbloomer_show_new_checkout_field_order2’, 10, 1 );
    function bbloomer_show_new_checkout_field_order2( $order ) {
    $order_id = $order->get_id();
    if ( get_post_meta( $order_id, ‘_application’, true ) ) echo ‘<p><strong>Photo compagnon/compagne :</strong> <a href=‘ . get_post_meta( $order_id, ‘_application’, true ) . ‘ target=_blank>’ . get_post_meta( $order_id, ‘_application’, true ) . ‘</a></p>’;
    }
    add_action( ‘woocommerce_email_after_order_table’, ‘bbloomer_show_new_checkout_field_emails2’, 20, 4 );
    function bbloomer_show_new_checkout_field_emails2( $order, $sent_to_admin, $plain_text, $email ) {
    if ( $sent_to_admin && get_post_meta( $order->get_id(), ‘_application’, true ) ) echo ‘<p><strong>Photo compagnon/compagne :</strong> ‘ . get_post_meta( $order->get_id(), ‘_application’, true ) . ‘</p>’;
    }

    Magalandes

    • Ce sujet a été modifié le il y a 3 mois et 1 semaine par Magalandes.
    • Ce sujet a été modifié le il y a 3 mois et 1 semaine par Magalandes.
    depanagewp
Affichage de 1 message (sur 1 au total)
  • Vous devez être connecté pour répondre à ce sujet.