Skip to content

Instantly share code, notes, and snippets.

Revisions

  1. @polevaultweb polevaultweb revised this gist Feb 17, 2022. 1 changed file with 1 addition and 1 deletion.
    2 changes: 1 addition & 1 deletion edd_perpetual_discounts.php
    Original file line number Diff line number Diff line change
    @@ -44,7 +44,7 @@ function edd_perpetual_discounts_discounts( $value ) {
    $discount_id = edd_get_discount_id_by_code( $code );

    if ( 1 == get_post_meta( $discount_id, '_edd_discount_use_renewals', true ) ) {
    // The discount code should be applied for all renewals
    // The discount should be applied for all renewals
    return false;
    }
    }
  2. @polevaultweb polevaultweb revised this gist Feb 17, 2022. 1 changed file with 1 addition and 0 deletions.
    1 change: 1 addition & 0 deletions edd_perpetual_discounts.php
    Original file line number Diff line number Diff line change
    @@ -1,6 +1,7 @@
    <?php

    add_filter( 'edd_update_discount', 'edd_perpetual_discounts_add_meta' );
    add_filter( 'edd_insert_discount', 'edd_perpetual_discounts_add_meta' );
    add_action( 'edd_edit_discount_form_before_use_once', 'edd_perpetual_discounts_setting', 10, 2 );
    add_filter( 'edd_get_option_recurring_one_time_discounts', 'edd_perpetual_discounts_discounts' );

  3. @polevaultweb polevaultweb created this gist Feb 17, 2022.
    52 changes: 52 additions & 0 deletions edd_perpetual_discounts.php
    Original file line number Diff line number Diff line change
    @@ -0,0 +1,52 @@
    <?php

    add_filter( 'edd_update_discount', 'edd_perpetual_discounts_add_meta' );
    add_action( 'edd_edit_discount_form_before_use_once', 'edd_perpetual_discounts_setting', 10, 2 );
    add_filter( 'edd_get_option_recurring_one_time_discounts', 'edd_perpetual_discounts_discounts' );


    function edd_perpetual_discounts_add_meta( $meta ) {
    $meta['use_renewals'] = 0;

    if ( isset( $_POST['use_renewals'] ) ) {
    $meta['use_renewals'] = intval( $_POST['use_renewals'] );
    }

    return $meta;
    }

    function edd_perpetual_discounts_setting( $discount_id, $discount ) {
    $use_renewals = get_post_meta( $discount_id, '_edd_discount_use_renewals', true ); ?>
    <tr>
    <th scope="row" valign="top">
    <label
    for="edd-use-renewals"><?php _e( 'Discount applies for renewals', 'easy-digital-downloads' ); ?></label>
    </th>
    <td>
    <input type="checkbox" id="edd-use-renewals" name="use_renewals"
    value="1"<?php checked( true, $use_renewals ); ?>/>
    <span
    class="description"><?php _e( 'By default discounts don\'t apply to renewals, but enabling it for this coupon will.', 'easy-digital-downloads' ); ?></span>
    </td>
    </tr>
    <?php
    }

    function edd_perpetual_discounts_discounts( $value ) {
    if ( ! $value ) {
    return $value;
    }

    $discounts = edd_get_cart_discounts();

    foreach ( $discounts as $code ) {
    $discount_id = edd_get_discount_id_by_code( $code );

    if ( 1 == get_post_meta( $discount_id, '_edd_discount_use_renewals', true ) ) {
    // The discount code should be applied for all renewals
    return false;
    }
    }

    return $value;
    }