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

    (@mordauk)

    Thread Starter robotor

    (@robotor)

    What are the instructions for integration of that snippet?

    Plugin Contributor Pippin Williamson

    (@mordauk)

    1. Create a new custom plugin using Pluginception: https://www.ads-software.com/plugins/pluginception/

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

    Thread Starter robotor

    (@robotor)

    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 Contributor Pippin Williamson

    (@mordauk)

    1. The closing PHP tag is not required.

    2. That’s fine, remove it.

    3. Can you show me?

    Thread Starter robotor

    (@robotor)

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

    Plugin Contributor 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 );

    Thread Starter robotor

    (@robotor)

    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 Contributor 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 );
    }

    Thread Starter robotor

    (@robotor)

    That worked… Thank you!

    Plugin Contributor Pippin Williamson

    (@mordauk)

    Glad to hear it!

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