// Add ACF fields if( function_exists('acf_add_local_field_group') ): acf_add_local_field_group(array( 'key' => 'group_60ad5e73694e4', 'title' => 'Development Theme Settings', 'fields' => array( array( 'key' => 'field_60ad5e7f9e5f0', 'label' => 'Development Mode', 'name' => 'development_mode', 'type' => 'true_false', 'instructions' => 'Enable development mode to use the development theme.', 'required' => 0, 'conditional_logic' => 0, 'wrapper' => array( 'width' => '', 'class' => '', 'id' => '', ), 'message' => '', 'default_value' => 0, 'ui' => 0, 'ui_on_text' => '', 'ui_off_text' => '', ), array( 'key' => 'field_60ad5ed39e5f1', 'label' => 'Allowed Users', 'name' => 'allowed_users', 'type' => 'user', 'instructions' => 'Select users who have access to the development theme.', 'required' => 0, 'conditional_logic' => 0, 'wrapper' => array( 'width' => '', 'class' => '', 'id' => '', ), 'role' => array( 0 => 'all', ), 'allow_null' => 0, 'multiple' => 1, 'return_format' => 'id', ), array( 'key' => 'field_60b355be128ce', 'label' => 'Development Theme', 'name' => 'development_theme', 'type' => 'select', 'instructions' => 'Select the development theme.', 'required' => 0, 'conditional_logic' => 0, 'wrapper' => array( 'width' => '', 'class' => '', 'id' => '', ), 'choices' => custom_get_installed_themes(), 'default_value' => array(), 'allow_null' => 0, 'multiple' => 0, 'ui' => 0, 'return_format' => 'value', 'ajax' => 0, 'placeholder' => '', ), ), 'location' => array( array( array( 'param' => 'options_page', 'operator' => '==', 'value' => 'dev-theme-settings', ), ), ), 'menu_order' => 0, 'position' => 'normal', 'style' => 'default', 'label_placement' => 'top', 'instruction_placement' => 'label', 'hide_on_screen' => '', 'active' => true, 'description' => '', )); endif; // Function to get installed themes function custom_get_installed_themes() { $themes = wp_get_themes(); $choices = array(); foreach ($themes as $theme) { $choices[$theme->get_stylesheet()] = $theme->get('Name'); } return $choices; } // Load appropriate theme based on development mode add_filter('template', 'custom_load_theme'); add_filter('stylesheet', 'custom_load_theme'); function custom_load_theme($theme) { global $development_mode; if ($development_mode) { // Check if user has access to development theme $current_user = wp_get_current_user(); $allowed_users = get_field('allowed_users', 'option'); $user_has_access = in_array($current_user->ID, $allowed_users); if ($user_has_access) { // Get selected development theme from ACF field $selected_theme = get_field('development_theme', 'option'); if (!empty($selected_theme)) { add_filter('option_template', function() use ($selected_theme) { return $selected_theme; }); add_filter('option_stylesheet', function() use ($selected_theme) { return $selected_theme; }); return $selected_theme; // Load selected development theme } } } return $theme; // Load regular theme }