Skip to content

Instantly share code, notes, and snippets.

@ipokkel
Last active June 5, 2020 10:18
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 1 You must be signed in to fork a gist
  • Save ipokkel/9718872efe56458b49107925895d2d92 to your computer and use it in GitHub Desktop.
Save ipokkel/9718872efe56458b49107925895d2d92 to your computer and use it in GitHub Desktop.
Hidden Ninja Forms form field that captures PMPro membership level
<?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