Created
January 20, 2020 12:50
-
-
Save andrewlimaza/809e9e0cbd5850d2093a969633543258 to your computer and use it in GitHub Desktop.
Immediate access for PMPro Series Dripfeed
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
<?php | |
/** | |
* Adds settings to Advanced Settings wheree you can set levels by comma separated list. E.G. 1,2,4,5 | |
* Users with defined levels will gain immediate access to dripfeed content. Other member's won't and will have to wait according to dripfeed settings. | |
* ****Currently requires pre-release of Series Add On V0.4.2+ | |
*/ | |
/** | |
* Overrides series delays if a membership level has been added | |
*/ | |
function pmpro_delay_adjust( $result, $days, $delay, $user_id ){ | |
if( function_exists( 'pmpro_hasMembershipLevel' ) ){ | |
$members_excluded = pmpro_getOption( 'pmpro_exclude_members_series' ); | |
if( $members_excluded ){ | |
$member_array = explode( ",", $members_excluded ); | |
$can_override = pmpro_hasMembershipLevel( $member_array, $user_id ); | |
if( $can_override ){ | |
return true; | |
} | |
} | |
} | |
return $result; | |
} | |
add_filter( 'pmpro_series_override_delay', 'pmpro_delay_adjust', 99, 4 ); | |
/** | |
* Adds a new field to the advanced settings page to exclude membership levels from the series drip. | |
*/ | |
function pmpro_delay_adjust_settings( $fields ){ | |
$fields[] = array( | |
'field_name' => __( 'pmpro_exclude_members_series', 'paid-memberships-pro' ), | |
'label' => __( 'Exclude Member Levels From Series Delay', 'paid-memberships-pro' ), | |
'field_type' => 'text', | |
'description' => __( 'Use member level ID\'s. Comma separate for more than one. Example 1,2,3', 'paid-memberships-pro' ) | |
); | |
return $fields; | |
} | |
add_filter( 'pmpro_custom_advanced_settings', 'pmpro_delay_adjust_settings' ); | |
function pmpro_has_membership_access_filter_callback( $hasaccess, $post, $user, $post_membership_levels ){ | |
if( function_exists( 'pmpro_hasMembershipLevel' ) ){ | |
$members_excluded = pmpro_getOption( 'pmpro_exclude_members_series' ); | |
if( $members_excluded ){ | |
$member_array = explode( ",", $members_excluded ); | |
$can_override = pmpro_hasMembershipLevel( $member_array, $user->ID ); | |
if( $can_override ){ | |
$hasaccess = true; | |
} | |
} | |
} | |
return $hasaccess; | |
} | |
add_filter( 'pmpro_has_membership_access_filter', 'pmpro_has_membership_access_filter_callback', 99, 4 ); |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment