WordPress.org

Support

Support » Plugins and Hacks » Easy Digital Downloads » [Resolved] Variations as dropdown instead of radio buttons?

[Resolved] Variations as dropdown instead of radio buttons?

Viewing 11 replies - 1 through 11 (of 11 total)
  • Plugin Author Pippin Williamson

    @mordauk

    What are the instructions for integration of that snippet?

    Plugin Author Pippin Williamson

    @mordauk

    1. Create a new custom plugin using Pluginception: https://wordpress.org/plugins/pluginception/

    2. Copy and paste the snippet into the bottom of the new plugin you created in 1.

    A few things:

    1) That snippet is missing a closing php tag
    2) If you paste it in, people will need to remove the opening php tag
    3) When I get it running, it does not replace the radio buttons, so each “add to cart” action adds the product to the cart twice.

    Plugin Author Pippin Williamson

    @mordauk

    1. The closing PHP tag is not required.

    2. That’s fine, remove it.

    3. Can you show me?

    tell me what you think… the plugin added the dropdowns, but the radio selectors remain.
    http://www.ianlabs.com/

    Plugin Author Pippin Williamson

    @mordauk

    Try changing remove_action( 'edd_purchase_link_top', 'edd_purchase_variable_pricing', 10, 1 ); to remove_action( 'edd_purchase_link_top', 'edd_purchase_variable_pricing', 10 );

    No change… here’s the entire plugin:

    <?php
    /*
    Plugin Name: download variation dropdowns
    Plugin URI:
    Description:
    Version:
    Author:
    Author URI:
    License:
    License URI:
    */
    
    /*
     * Convert variable prices from radio buttons to a dropdown
     */
    function shoestrap_edd_purchase_variable_pricing( $download_id ) {
    	$variable_pricing = edd_has_variable_prices( $download_id );
    
    	if ( ! $variable_pricing )
    		return;
    
    	$prices = apply_filters( 'edd_purchase_variable_prices', edd_get_variable_prices( $download_id ), $download_id );
    
    	$type   = edd_single_price_option_mode( $download_id ) ? 'checkbox' : 'radio';
    
    	do_action( 'edd_before_price_options', $download_id );
    
    	echo '<div class="edd_price_options">';
    		if ( $prices ) {
    			echo '<select name="edd_options[price_id][]">';
    			foreach ( $prices as $key => $price ) {
    				printf(
    					'<option for="%3$s" name="edd_options[price_id][]" id="%3$s" class="%4$s" value="%5$s" %7$s> %6$s</option>',
    					checked( 0, $key, false ),
    					$type,
    					esc_attr( 'edd_price_option_' . $download_id . '_' . $key ),
    					esc_attr( 'edd_price_option_' . $download_id ),
    					esc_attr( $key ),
    					esc_html( $price['name'] . ' - ' . edd_currency_filter( edd_format_amount( $price[ 'amount' ] ) ) ),
    					selected( isset( $_GET['price_option'] ), $key, false )
    				);
    				do_action( 'edd_after_price_option', $key, $price, $download_id );
    			}
    			echo '</select>';
    		}
    		do_action( 'edd_after_price_options_list', $download_id, $prices, $type );
    
    	echo '</div><!--end .edd_price_options-->';
    	do_action( 'edd_after_price_options', $download_id );
    }
    add_action( 'edd_purchase_link_top', 'shoestrap_edd_purchase_variable_pricing', 10, 1 );
    remove_action( 'edd_purchase_link_top', 'edd_purchase_variable_pricing', 10 );
    Plugin Author Pippin Williamson

    @mordauk

    Here’s a working version:

    <?php
    /*
    Plugin Name: download variation dropdowns
    Plugin URI:
    Description:
    Version:
    Author:
    Author URI:
    License:
    License URI:
    */
    function shoestrap_add_actions() {
    
    	remove_action( 'edd_purchase_link_top', 'edd_purchase_variable_pricing', 10 );
    	add_action( 'edd_purchase_link_top', 'shoestrap_edd_purchase_variable_pricing', 10, 1 );
    
    }
    add_action( 'plugins_loaded', 'shoestrap_add_actions' );
    
    function shoestrap_edd_purchase_variable_pricing( $download_id ) {
    	$variable_pricing = edd_has_variable_prices( $download_id );
    
    	if ( ! $variable_pricing )
    		return;
    
    	$prices = apply_filters( 'edd_purchase_variable_prices', edd_get_variable_prices( $download_id ), $download_id );
    
    	$type   = edd_single_price_option_mode( $download_id ) ? 'checkbox' : 'radio';
    
    	do_action( 'edd_before_price_options', $download_id );
    
    	echo '<div class="edd_price_options">';
    		if ( $prices ) {
    			echo '<select name="edd_options[price_id][]">';
    			foreach ( $prices as $key => $price ) {
    				printf(
    					'<option for="%3$s" name="edd_options[price_id][]" id="%3$s" class="%4$s" value="%5$s" %7$s> %6$s</option>',
    					checked( 0, $key, false ),
    					$type,
    					esc_attr( 'edd_price_option_' . $download_id . '_' . $key ),
    					esc_attr( 'edd_price_option_' . $download_id ),
    					esc_attr( $key ),
    					esc_html( $price['name'] . ' - ' . edd_currency_filter( edd_format_amount( $price[ 'amount' ] ) ) ),
    					selected( isset( $_GET['price_option'] ), $key, false )
    				);
    				do_action( 'edd_after_price_option', $key, $price, $download_id );
    			}
    			echo '</select>';
    		}
    		do_action( 'edd_after_price_options_list', $download_id, $prices, $type );
    
    	echo '</div><!--end .edd_price_options-->';
    	do_action( 'edd_after_price_options', $download_id );
    }

    That worked… Thank you!

    Plugin Author Pippin Williamson

    @mordauk

    Glad to hear it!

Viewing 11 replies - 1 through 11 (of 11 total)
  • The topic ‘[Resolved] Variations as dropdown instead of radio buttons?’ is closed to new replies.
Skip to toolbar