Skip to content

Settings Storage

The addon stores its settings inside the Reign theme’s shared options record, not in a plugin-specific option. Knowing this matters when reading or writing settings programmatically.

All of the addon’s settings live under the tutorlms key of the reign_options option, which is owned by the Reign theme and shared by every Reign addon:

$settings = get_option( 'reign_options', array() );
$enabled = ! empty( $settings['tutorlms']['enable_profile_courses_tab'] );

Keys are read in a flat shape: reign_options[tutorlms][<key>].

Key Type Default Controls
enable_profile_courses_tab checkbox 0 Whether the “My Courses” profile tab is added to BuddyPress, BuddyBoss, and PeepSo profiles.

The plugin activator seeds this key non-destructively on activation, adding only missing keys and leaving other addons’ settings in the shared record untouched.

Never write reign_options from the theme-populated global. The Reign theme hydrates its in-memory settings global from reign_options early in the request. When Reign is not the active theme that global is empty, so writing it back would wipe every addon’s settings. The addon’s save handler reads reign_options fresh, merges only its own tutorlms sub-key, and writes the merged record back. Follow the same pattern in custom code:

$reign_options = get_option( 'reign_options', array() );
if ( ! is_array( $reign_options ) ) {
$reign_options = array();
}
$reign_options['tutorlms']['enable_profile_courses_tab'] = 1;
update_option( 'reign_options', $reign_options );

The settings form is protected by the reign-options nonce and a manage_options capability check.

The Easy Digital Downloads license key is stored separately from reign_options:

Option Purpose
reign_tutorlms_addon_edd_license_key The license key entered in the Reign license panel.
reign_tutorlms_addon_edd_license_status The cached license status (valid, expired, or invalid).

These drive automatic updates and are managed from the Reign options license panel.