Skip to content

Instantly share code, notes, and snippets.

@ambrosiora
Last active June 2, 2020 18:21
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save ambrosiora/15cb390fc2a875c4290f276903b14417 to your computer and use it in GitHub Desktop.
Save ambrosiora/15cb390fc2a875c4290f276903b14417 to your computer and use it in GitHub Desktop.
<?php
/**
* Plugin Name: Membership 2 - Change Reg/Prof Fields
* Plugin URI: https://premium.wpmudev.org/
* Description: Adds Custom fields to Registration/Profile and removes Username
* Version: 1.0.0
* Author: Konstantinos Xenos @ WPMUDEV
* Author URI: https://premium.wpmudev.org/
* License: GPLv2 or later
*/
if (!defined('ABSPATH')) {
exit;
}
if (!class_exists('Membership_Add_My_Custom_Fields')) {
class Membership_Add_My_Custom_Fields {
/**
* Constructor.
*/
public function __construct() {
add_action('init', array($this, 'init'));
}
/**
* Initialization.
*/
public function init() {
add_filter('ms_shortcode_register_form_fields', array($this, 'add_my_custom_mp_fields'));
add_filter('ms_view_profile_fields', array($this, 'add_my_custom_mp_fields_profile'));
add_filter('ms_view_member_editor_fields_edit', array($this, 'add_my_custom_mp_fields_profile_editor'));
add_filter('ms_shortcode_logout_message', array($this, 'add_my_custom_mp_logout_message'));
add_action('ms_view_account_profile_before_card', array($this, 'add_my_custom_mp_fields_profile_page'));
add_action('ms_view_frontend_profile_after_fields', array($this, 'add_my_custom_mp_fields_profile_js'));
add_action('after_signup_form', array($this, 'add_my_custom_mp_fields_js'));
// add_action('user_register', array($this, 'add_my_custom_mp_fields_meta'), 10, 1);
// add_action('profile_update', array($this, 'add_my_custom_mp_fields_meta'), 10, 1);
// add_action('show_user_profile', array($this, 'extra_user_profile_fields'));
// add_action('edit_user_profile', array($this, 'extra_user_profile_fields'));
}
/**
* Adds a custom logout message on the profile page
*/
public function add_my_custom_mp_logout_message() {
$current_user = wp_get_current_user();
$content = esc_html__('You are logged in as');
$content.= ' ' . $current_user->user_email . '. ';
return $content;
}
/**
* Filters the form and adds the custom fields on registerration.
*/
public function add_my_custom_mp_fields($fields) {
// $array = array_slice($fields, 0, 5, true)
// + array(
// 'suburb' => array(
// 'id' => 'suburb',
// 'title' => esc_html__('Suburb', 'membership2'),
// 'placeholder' => '',
// 'type' => 'text',
// 'value' => '',
// ),
// 'phone' => array(
// 'id' => 'phone',
// 'title' => esc_html__('Phone Number', 'membership2'),
// 'placeholder' => '',
// 'type' => 'text',
// 'value' => '',
// ),
// 'relationship' => array(
// 'id' => 'relationship',
// 'title' => esc_html__('Relationship', 'membership2'),
// 'placeholder' => '',
// 'type' => 'select',
// 'field_options' => array(
// 'Customer' => esc_html__('Customer', 'membership2'),
// 'Family Member' => esc_html__('Family Member', 'membership2'),
// 'Employee' => esc_html__('Employee', 'membership2'),
// 'Registered Contractor' => esc_html__('Registered Contractor', 'membership2'),
// 'Service Provider' => esc_html__('Service Provider', 'membership2'),
// 'Nominee' => esc_html__('Nominee', 'membership2'),
// 'Auditor' => esc_html__('Auditor', 'membership2'),
// ),
// ),
// )
// + array_slice($fields, 5, count($fields) - 1, true);
$fields['username']['type'] = 'hidden';
return $fields;
}
/**
* Filters the form and adds the custom fields on profile.
*/
public function add_my_custom_mp_fields_profile($fields) {
//$array = array_slice($fields, 0, 5, true) + array('suburb' => array('id' => 'suburb', 'title' => esc_html__('Suburb', 'membership2'), 'placeholder' => '', 'type' => 'text', 'value' => get_user_meta(get_current_user_id(), 'ms_custom_field_suburb', true),), 'phone' => array('id' => 'phone', 'title' => esc_html__('Phone Number', 'membership2'), 'placeholder' => '', 'type' => 'text', 'value' => get_user_meta(get_current_user_id(), 'ms_custom_field_phone', true),), 'relationship' => array('id' => 'relationship', 'title' => esc_html__('Relationship', 'membership2'), 'placeholder' => '', 'type' => 'select', 'value' => get_user_meta(get_current_user_id(), 'ms_custom_field_relationship', true), 'field_options' => array('Customer' => esc_html__('Customer', 'membership2'), 'Family Member' => esc_html__('Family Member', 'membership2'), 'Employee' => esc_html__('Employee', 'membership2'), 'Registered Contractor' => esc_html__('Registered Contractor', 'membership2'), 'Service Provider' => esc_html__('Service Provider', 'membership2'), 'Nominee' => esc_html__('Nominee', 'membership2'), 'Auditor' => esc_html__('Auditor', 'membership2'),),),) + array_slice($fields, 5, count($fields) - 1, true);
$fields['username']['type'] = 'hidden';
return $fields;
}
/**
* Adds the custom fields on membership editor
*/
public function add_my_custom_mp_fields_profile_editor($fields) {
// $fields['editor']['suburb'] = array('id' => 'suburb', 'title' => esc_html__('Suburb', 'membership2'), 'placeholder' => '', 'type' => 'text', 'value' => get_user_meta(esc_attr($_GET['user_id']), 'ms_custom_field_suburb', true),);
// $fields['editor']['phone'] = array('id' => 'phone', 'title' => esc_html__('Phone Number', 'membership2'), 'placeholder' => '', 'type' => 'text', 'value' => get_user_meta(esc_attr($_GET['user_id']), 'ms_custom_field_phone', true),);
// $fields['editor']['relationship'] = array('id' => 'relationship', 'title' => esc_html__('Relationship', 'membership2'), 'placeholder' => '', 'type' => 'select', 'value' => get_user_meta(esc_attr($_GET['user_id']), 'ms_custom_field_relationship', true), 'field_options' => array('Customer' => esc_html__('Customer', 'membership2'), 'Family Member' => esc_html__('Family Member', 'membership2'), 'Employee' => esc_html__('Employee', 'membership2'), 'Registered Contractor' => esc_html__('Registered Contractor', 'membership2'), 'Service Provider' => esc_html__('Service Provider', 'membership2'), 'Nominee' => esc_html__('Nominee', 'membership2'), 'Auditor' => esc_html__('Auditor', 'membership2'),),);
return $fields;
}
/**
* Displays the fields on membership profile page
*/
public function add_my_custom_mp_fields_profile_page() {
ob_start();?>
<script>
( function ( $ ) {
$( document ).ready( function(){
$( 'div#account-profile table tr:eq( 2 )' ).remove();
});
} ( jQuery ) )
</script>
<?php
$scripts = ob_get_clean();
echo $scripts;
}
/**
* Adds the necessary jquery to the profile to disable the e-mail change.
*/
public function add_my_custom_mp_fields_profile_js() {
ob_start();?>
<script>
( function ( $ ) {
$( document ).ready( function(){
$( 'input#email' ).attr( 'disabled', true );
});
} ( jQuery ) )
</script>
<?php
$scripts = ob_get_clean();
echo $scripts;
}
/**
* Adds the necessary jquery to 'copy' the email as a username on registration.
*/
public function add_my_custom_mp_fields_js() {?>
<script>
( function ( $ ) {
$( document ).ready( function(){
$( 'input#email' ).on( 'focusout', function() {
var $mail = $( this ).val();
$( 'input#username' ).val( $mail );
});
});
} ( jQuery ) )
</script>
<?php
$scripts = ob_get_clean();
echo $scripts;
}
/**
* Updates the usermeta for the custom fields.
*/
// public function add_my_custom_mp_fields_meta($user_id) {
// $suburb = '';
// $phone = '';
// $relationship = '';
// if (!empty($_POST['suburb'])) {
// $suburb = sanitize_text_field($_POST['suburb']);
// }
// if (!empty($_POST['phone'])) {
// $phone = sanitize_text_field($_POST['phone']);
// }
// if (!empty($_POST['relationship'])) {
// $relationship = sanitize_text_field($_POST['relationship']);
// }
// update_user_meta($user_id, 'ms_custom_field_suburb', $suburb);
// update_user_meta($user_id, 'ms_custom_field_phone', $phone);
// update_user_meta($user_id, 'ms_custom_field_relationship', $relationship);
// }
/**
* Adds custom fields to User Profile
*/
/*public function extra_user_profile_fields($user) {
$msselect = get_user_meta($user->ID, 'ms_custom_field_relationship', true);?>
<h3><?php _e('Membership Custom Fields', 'membership2'); ?></h3>
<table class="form-table">
<tr>
<th><label for="suburb"><?php esc_html_e('Suburb', 'membership2'); ?></label></th>
<td>
<input type="text" name="suburb" id="suburb" value="<?php echo get_user_meta($user->ID, 'ms_custom_field_suburb', true); ?>" class="regular-text" /><br />
</td>
</tr>
<tr>
<th><label for="phone"><?php esc_html_e('Phone Number', 'membership2'); ?></label></th>
<td>
<input type="text" name="phone" id="phone" value="<?php echo get_user_meta($user->ID, 'ms_custom_field_phone', true); ?>" class="regular-text" /><br />
</td>
</tr>
<tr>
<th><label for="relationship"><?php esc_html_e('Relationship', 'membership2'); ?></label></th>
<td>
<select id="relationship" name="relationship">
<option value="Customer" <?php echo ('Customer' === $msselect) ? 'selected="selected"' : ''; ?>>
<?php esc_html_e('Customer', 'membership2'); ?>
</option>
<option value="Family Member"<?php echo ('Family Member' === $msselect) ? 'selected="selected"' : ''; ?>>
<?php esc_html_e('Family Member', 'membership2'); ?>
</option>
<option value="Employee"<?php echo ('Employee' === $msselect) ? 'selected="selected"' : ''; ?>>
<?php esc_html_e('Employee', 'membership2'); ?>
</option>
<option value="Registered Contractor"<?php echo ('Registered Contractor' === $msselect) ? 'selected="selected"' : ''; ?>>
<?php esc_html_e('Registered Contractor', 'membership2'); ?>
</option>
<option value="Service Provider"<?php echo ('Service Provider' === $msselect) ? 'selected="selected"' : ''; ?>>
<?php esc_html_e('Service Provider', 'membership2'); ?>
</option>
<option value="Nominee"<?php echo ('Nominee' === $msselect) ? 'selected="selected"' : ''; ?>>
<?php esc_html_e('Nominee', 'membership2'); ?>
</option>
<option value="Auditor"<?php echo ('Auditor' === $msselect) ? 'selected="selected"' : ''; ?>>
<?php esc_html_e('Auditor', 'membership2'); ?>
</option>
</select>
</td>
</tr>
</table>
<?php
}*/
}
new Membership_Add_My_Custom_Fields();
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment