简体   繁体   中英

Trying to send a hidden input value to next page

I am trying to tweak Wordpress Jigoshop according to my customer's needs and I got a bit stuck. What I need is: when a product variation is selected, some additional options appear in the form of radio buttons which customers must chose. I've managed to get everything working, but what I need now is to send the selected radio button to the cart, checkout and so on when the submit button is clicked.

I am trying to use their product customization function to do this and their function is:

    if (!function_exists('jigoshop_product_customize_panel')) {
    function jigoshop_product_customize_panel() {
        global $_product;

    if ( isset( $_POST['Submit'] ) && $_POST['Submit'] == 'Save Personalization' ) {
        $custom_products = (array) jigoshop_session::instance()->customized_products;
        $custom_products[$_POST['customized_id']] = trim( wptexturize( $_POST['jigoshop_customized_product'] ));
        jigoshop_session::instance()->customized_products = $custom_products;
    }

    if ( get_post_meta( $_product->ID , 'customizable', true ) == 'yes' ) :
        $custom_products = (array) jigoshop_session::instance()->customized_products;
        $custom = isset( $custom_products[$_product->ID] ) ? $custom_products[$_product->ID] : '';
        $custom_length = get_post_meta( $_product->ID , 'customized_length', true );
        $length_str = $custom_length == '' ? '' : sprintf( __( 'You may enter a maximum of %s characters.', 'jigoshop' ), $custom_length );

        echo '<div class="panel" id="tab-customize">';
        echo '<p>' . apply_filters('jigoshop_product_customize_heading', __('Enter your personal information as you want it to appear on the product.<br />'.$length_str, 'jigoshop')) . '</p>';

        ?>

            <form action="" method="post">

                <input type="hidden" name="customized_id" value="<?php echo esc_attr( $_product->ID ); ?>" />

                <?php
                if ( $custom_length == '' ) :
                ?>
                    <textarea
                        id="jigoshop_customized_product"
                        name="jigoshop_customized_product"
                        cols="60"
                        rows="4"><?php echo esc_textarea( $custom ); ?>
                    </textarea>
                <?php else : ?>
                    <input 
                        type="text"
                        id="jigoshop_customized_product"
                        name="jigoshop_customized_product"
                        size="<?php echo $custom_length; ?>"
                        maxlength="<?php echo $custom_length; ?>"
                        value="<?php echo esc_attr( $custom ); ?>" />
                <?php endif; ?>

                <p class="submit"><input name="Submit" type="submit" class="button-alt add_personalization" value="<?php _e( "Save Personalization", 'jigoshop' ); ?>" /></p>

            </form>

        <?php
        echo '</div>';
    endif;
}
}

I tried modifying their function to suit my needs and this is what I've come up with (where get_cod is the id and name of the hidden input and "Adauga in cos" is the value of my submit button):

if (!function_exists('salveaza_cod_material')) {
function salveaza_cod_material() {
    global $_product;

    if ( isset( $_POST['submit']) && $_POST('submit') == 'Adauga in cos') {
        $custom_products = (array) jigoshop_session::instance()->customized_products;
        $custom_products[$_POST['customized_id']] = trim( wptexturize( $_POST['get_cod'] ));
        jigoshop_session::instance()->customized_products = $custom_products;
    }

        $custom_products = (array) jigoshop_session::instance()->customized_products;
        $custom = isset( $custom_products[$_product->ID] ) ? $custom_products[$_product->ID] : '';
}}

However the value isn't sent to the next page. Can anybody please help? Cheers!

Here's an update containing more of the code:

<form action="<?php echo esc_url( $_product->add_to_cart_url() ); ?>"     class="variations_form cart" method="post">
        <fieldset class="variations">
            <?php foreach ( $attributes as $name => $options ): ?>
                <?php $sanitized_name = sanitize_title( $name ); ?>
                <div>
                    <span class="select_label"><?php echo jigoshop_product::attribute_label('pa_'.$name); ?></span>

                    <select id="<?php echo esc_attr( $sanitized_name ); ?>" name="tax_<?php echo $sanitized_name; ?>">

                        <option value=""><?php echo __('Choose an option ', 'jigoshop') ?>&hellip;</option>
                        <?php foreach ( $options as $value ) : ?>
                            <?php if ( taxonomy_exists( 'pa_'.$sanitized_name )) : ?>
                                <?php $term = get_term_by( 'slug', $value, 'pa_'.$sanitized_name ); ?>
                                <option value="<?php echo esc_attr( $term->slug ); ?>"><?php echo $term->name; ?> </option>
                            <?php else : ?>
                                <option value="<?php echo esc_attr( sanitize_title( $value ) ); ?>"><?php echo $value; ?></option>
                            <?php endif;?>
                        <?php endforeach; ?>
                    </select>


                </div>
            <?php endforeach;?>
        </fieldset>
<div id="piele-neagra" class="colors" style="display:none"> 
    <ul class="materiale">
    <li><input type="radio" name="piele-neagra" value="L73">
    <p><img class="alignnone size-full wp-image-155" title="L73" src="http://www.scaune-directoriale.ro/wp-content/uploads/materiale/piele-neagra/L73.gif" alt="L73" width="72" height="72" /></p>
    </li>
    </ul> 
</div>

<div id="stofa-mf" class="colors" style="display:none"> 
    <ul class="materiale">

    <li><input type="radio" name="tapiterie" value="MF01" />


...


 <div id="stofa-rg" class="colors" style="display:none"> Stofa RG</div>
        <div class="clear"></div>

        <span id="cod_material"><?php echo esc_attr( $custom ); ?></span>
        <span><?php echo trim( wptexturize( $_POST['get_cod'] )); ?></span>
        <div class="single_variation"></div>





        <?php do_action('jigoshop_before_add_to_cart_form_button'); ?>
        <div class="variations_button" style="display:none;">
            <input type="hidden" name="variation_id" value="" />
             <input type="hidden" name="customized_id" value="<?php echo esc_attr( $_product->ID ); ?>" />
        <input type="hidden" id="get_cod" name="get_cod" value="" />
            <input type="hidden" name="product_id" value="<?php echo esc_attr( $post->ID ); ?>" />
            <div class="quantity"><input name="quantity" value="1" size="4" title="Qty" class="input-text qty text" maxlength="12" /></div>
            <input type="submit" id="submit_cart" class="button-alt" value="<?php esc_html_e('Add to cart', 'jigoshop'); ?>" />
        </div>
        <?php do_action('salveaza_cod_material'); ?>
        <?php do_action('jigoshop_add_to_cart_form'); ?>
    </form>

And this is the section of the cart that receives the value:

if ( !empty( $values['variation_id'] )) {
                                             $product_id = $values['variation_id'];
                                    } else {
                                        $product_id = $values['product_id'];
                                    }
                                        $custom_products = (array) jigoshop_session::instance()->customized_products;
                                    $custom =     isset( $custom_products[$product_id] ) ? $custom_products[$product_id] : '';
                                    if ( !     empty( $custom_products[$product_id] ) ) :
                                        ?>
                                        <dl      class="customization">
                                                <dt class="customized_product_label"><?php echo     apply_filters('jigoshop_customized_product_label', __('Personal: ','jigoshop') ); ?></dt>
                                                <dd class="customized_product"><?php echo esc_textarea( $custom ); ?></dd>
                                             </dl>
                                        <?    php
                                    endif;
                                    ?>

这只是一个错字: if ( isset( $_POST['submit']) && $_POST('submit') == 'Adauga in cos') ,将$_POST('submit')替换$_POST('submit') $_POST['submit']

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM