Skip to content

Function

Register the settings.

tml_admin_register_settings( )

Source

function tml_admin_register_settings() {

    $settings = array(
        'theme-my-login' => array(
            'sections' => tml_admin_get_settings_sections(),
            'fields'   => tml_admin_get_settings_fields(),
        ),
    );

    foreach ( tml_get_extensions() as $extension ) {
        $settings[ $extension->get_name() ] = array(
            'sections' => (array) $extension->get_settings_sections(),
            'fields'   => (array) $extension->get_settings_fields(),
        );

        if ( $extension->get_license_key_option() ) {
            add_settings_field(
                $extension->get_license_key_option(),
                $extension->get_title(),
                'tml_admin_setting_callback_license_key_field',
                'theme-my-login-licenses',
                'tml_settings_licenses',
                array(
                    'extension' => $extension,
                    'label_for' => $extension->get_license_key_option(),
                )
            );
            register_setting(
                'theme-my-login-licenses',
                $extension->get_license_key_option(),
                'sanitize_text_field'
            );
        }
    }

    // Loop through settings
    foreach ( $settings as $group ) {

        // Loop through sections
        foreach ( $group['sections'] as $section_id => $section ) {

            // Only add section and fields if section has fields
            if ( empty( $group['fields'][ $section_id ] ) ) {
                continue;
            }

            $page = ! empty( $section['page'] ) ? $section['page'] : 'theme-my-login';

            // Add the section
            add_settings_section( $section_id, $section['title'], $section['callback'], $page );

            // Loop through fields for this section
            foreach ( $group['fields'][ $section_id ] as $field_id => $field ) {

                // Add the field
                if ( ! empty( $field['callback'] ) && ! empty( $field['title'] ) ) {
                    add_settings_field( $field_id, $field['title'], $field['callback'], $page, $section_id, isset( $field['args'] ) ? $field['args'] : array() );
                }

                // Register the setting
                register_setting( $page, $field_id, isset( $field['sanitize_callback'] ) ? $field['sanitize_callback'] : array() );
            }
        }
    }
}

Uses

Changelog

VersionDescription
7.0 Introduced.