Woocommerce Product Add-ons - Auto-select first option

Discussion in 'PHP' started by EFitzpatr7, Apr 15, 2016.

  1. EFitzpatr7

    EFitzpatr7

    Joined:
    Apr 15, 2016
    Messages:
    2
    Likes Received:
    0
    Location:
    Stoke-on-Trent, United Kingdom
    The agency I work for are trying to get a client's website to auto-select the first option on the maintenance packages for their products.

    Currently, we are using an if statement within a foreach.

    The code below is the script we are currently using:

    PHP:
    <?php foreach ( $addon['options'] as $i => $option ) :

                    $price         = $option['price'] > 0 ? '(' . wc_price( get_product_addon_price_for_display( $option['price'] ) ) . ')' : '';
                    $current_value = 0;

                    if ( isset( $_POST[ 'addon-' . sanitize_title( $addon['field-name'] ) ] ) ) {
                                    $current_value = (
                                                                    isset( $_POST[ 'addon-' . sanitize_title( $addon['field-name'] ) ] ) &&
                                                                    in_array( sanitize_title( $option['label'] ), $_POST[ 'addon-' . sanitize_title( $addon['field-name'] ) ] )
                                                                    ) ? 1 : 0;
                    }
                    ?>

                    <p class="form-row form-row-wide addon-wrap-<?php echo sanitize_title( $addon['field-name'] ) . '-' . $i; ?>">
                                    <label><input type="radio" class="addon addon-radio" name="addon-<?php echo sanitize_title( $addon['field-name'] ); ?>[]" data-raw-price="<?php echo esc_attr( $option['price'] ); ?>" data-price="<?php echo get_product_addon_price_for_display( $option['price'] ); ?>" value="<?php echo sanitize_title( $option['label'] ); ?>" <?php checked( $current_value, 1 ); ?> /> <?php echo wptexturize( $option['label'] . ' ' . $price ); ?></label>
                    </p>

    <?php endforeach; ?>
    The code above currently doesn't select any of the radio buttons, but if we change

    PHP:
    <?php echo sanitize_title( $option['label']);?>" <?php checked( $current_value,1);?>
    to

    PHP:
    <?php echo sanitize_title( $option['label']);?>" <?php checked( $current_value,0);?>
    the final radio point is selected.

    The only issue we have then got is the fact that we will then have to manually go and change every single product, and move the option "None" to the end of the list, as it is currently the first option on all of the products.

    Is there a way with the code above to be able to auto-select the first option rather than the last? The name for the first option is: addon-2491-maintenance-packages-0.

    Any help is much appreciated.
     
    EFitzpatr7, Apr 15, 2016
    #1
    1. Advertisements

  2. EFitzpatr7

    EFitzpatr7

    Joined:
    Apr 15, 2016
    Messages:
    2
    Likes Received:
    0
    Location:
    Stoke-on-Trent, United Kingdom
    Bump
     
    EFitzpatr7, Apr 18, 2016
    #2
    1. Advertisements

Ask a Question

Want to reply to this thread or ask your own question?

You'll need to choose a username for the site, which only take a couple of moments (here). After that, you can post your question and our members will help you out.