Last active
June 5, 2020 10:18
-
-
Save ipokkel/9718872efe56458b49107925895d2d92 to your computer and use it in GitHub Desktop.
Hidden Ninja Forms form field that captures PMPro membership level
This file contains hidden or 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 | |
/* | |
* Add a hidden field in Ninja Forms to capture Membership Level (if user is logged in). | |
* | |
* For Ninja Forms version 3 and higher. | |
*/ | |
// Create Membership Level field for Ninja Forms | |
add_filter( 'ninja_forms_register_fields', function( $fields ) { | |
$fields['pmpromembershiplevel'] = new PmproMembershipLevel; | |
return $fields; | |
} ); | |
class PmproMembershipLevel extends NF_Abstracts_Input { | |
protected $_name = 'pmpromembershiplevel'; | |
protected $_nicename = 'Membership Level'; | |
protected $_section = 'userinfo'; | |
protected $_icon = 'eye-slash'; | |
protected $_type = 'hidden'; | |
protected $_templates = 'hidden'; | |
protected $_wrap_template = 'wrap-no-label'; | |
protected $_settings_only = array( | |
'key', 'label', 'admin_label' | |
); | |
public function __construct() { | |
parent::__construct(); | |
$this->_nicename = __( 'Membership Level', 'ninja-forms' ); | |
$this->_settings[ 'label' ][ 'width' ] = 'full'; | |
} | |
} | |
// Set value for pmpromembershiplevel field | |
add_filter( 'ninja_forms_render_default_value', 'nf_default_value_membership_level' , 10 , 3); | |
function nf_default_value_membership_level( $default_value, $field_type, $field_settings ) { | |
global $current_user; | |
// Get the current user's membership level object. | |
if ( function_exists( 'pmpro_getMembershipLevelForUser' ) ) { | |
$level = pmpro_getMembershipLevelForUser( $current_user->ID ); | |
} else { | |
$level = false; | |
} | |
// Get the current user's membership level name. | |
if ( ! empty( $level ) ) { | |
$current_membership_level_name = $level->name; | |
} else { | |
$current_membership_level_name = false; | |
} | |
if ( 'pmpromembershiplevel' == $field_type && in_array( 'pmpromembershiplevel', $field_settings ) && ! empty( $current_membership_level_name ) ) { | |
$default_value = $current_membership_level_name; | |
} | |
return $default_value; | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment