'string', 'sanitize_callback' => [ 'ACF_Login_Admin', 'acf_login_field_validate' ], 'default' => '' ) ); add_settings_section( 'acf_login_section', __('Custom login field settings'), '', 'acf-login-page' ); add_settings_field( 'acf_login_field', __('Custom login field'), array('ACF_Login_Admin', 'acf_login_field_callback'), 'acf-login-page', 'acf_login_section' ); register_setting( 'acf-login-page', 'acf_login_field_only', array( 'type' => 'string', 'sanitize_callback' => [ 'ACF_Login_Admin', 'acf_login_field_only_validate' ], 'default' => '' ) ); add_settings_field( 'acf_login_field_only', __('Login by custom login field only'), array('ACF_Login_Admin', 'acf_login_field_only_callback'), 'acf-login-page', 'acf_login_section' ); } public static function acf_login_field_callback() { $field_value = get_option('acf_login_field'); $field_options = self::get_options(); ?>

add field group and show this field group in the user form to be able to pick a field from this field group to be used as a custom login field') ?>

__('Only custom field'), 'no' => __('Either username or this selected custom field')]; ?>

add field group and show this field group in the user form to be able to pick a field from this field group to be used as a custom login field') ?>

Settings'; array_push( $links, $settings_link ); return $links; } public static function admin_menu() { $slug = 'edit.php?post_type=acf-field-group'; if ( function_exists('acf_get_setting') ) { $cap = acf_get_setting( 'capability' ); add_submenu_page( $slug, __( 'Custom login field', 'acf_login' ), __( 'Custom login field', 'acf_login' ), $cap, 'acf-login-page', array( 'ACF_Login_Admin', 'admin_index' ), 10 ); } } public static function admin_index() { ?>

'acf-field-group', 'post_status' => 'publish', ]); if ( !empty($field_groups) ) { foreach ($field_groups as $field_group) { $field_group_settings = maybe_unserialize($field_group->post_content); if ( !empty($field_group_settings) && !empty($field_group_settings['location']) && !empty($field_group_settings['location'][0]) && !empty($field_group_settings['location'][0][0]) && !empty($field_group_settings['location'][0][0]['param']) && ($field_group_settings['location'][0][0]['param'] == 'user_form') ) { $user_fields = get_posts([ 'post_type' => 'acf-field', 'post_parent' => $field_group->ID, 'post_status' => 'publish', ]); if ( !empty($user_fields) ) { foreach ($user_fields as $user_field) { $field_label = $user_field->post_title; $field_id = $user_field->post_name; $field_options[$field_id] = $field_label; } } } } } return $field_options; } /** * Validate options. */ public static function acf_login_field_validate( $value ) { $options = self::get_options(); if ( !in_array( $value, array_keys($options) ) ) { return ''; } return $value; } /** * Validate options. */ public static function acf_login_field_only_validate( $value ) { $options = ['yes', 'no']; if ( !in_array( $value, array_keys($options) ) ) { return ''; } return $value; } }