Skip to content

Instantly share code, notes, and snippets.

@andrewlimaza
Created January 20, 2020 12:50
Show Gist options
  • Star 2 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save andrewlimaza/809e9e0cbd5850d2093a969633543258 to your computer and use it in GitHub Desktop.
Save andrewlimaza/809e9e0cbd5850d2093a969633543258 to your computer and use it in GitHub Desktop.
Immediate access for PMPro Series Dripfeed
<?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