Sign Up

Sign Up to our social questions and Answers Engine to ask questions, answer people’s questions, and connect with other people.

Have an account? Sign In

Have an account? Sign In Now

Sign In

Login to our social questions & Answers Engine to ask questions answer people’s questions & connect with other people.

Sign Up Here

Forgot Password?

Don't have account, Sign Up Here

Forgot Password

Lost your password? Please enter your email address. You will receive a link and will create a new password via email.

Have an account? Sign In Now

You must login to ask a question.

Forgot Password?

Need An Account, Sign Up Here

Please briefly explain why you feel this question should be reported.

Please briefly explain why you feel this answer should be reported.

Please briefly explain why you feel this user should be reported.

Sign InSign Up

The Archive Base

The Archive Base Logo The Archive Base Logo

The Archive Base Navigation

  • SEARCH
  • Home
  • About Us
  • Blog
  • Contact Us
Search
Ask A Question

Mobile menu

Close
Ask a Question
  • Home
  • Add group
  • Groups page
  • Feed
  • User Profile
  • Communities
  • Questions
    • New Questions
    • Trending Questions
    • Must read Questions
    • Hot Questions
  • Polls
  • Tags
  • Badges
  • Buy Points
  • Users
  • Help
  • Buy Theme
  • SEARCH
Home/ Questions/Q 8897175
In Process

The Archive Base Latest Questions

Editorial Team
  • 0
Editorial Team
Asked: June 15, 20262026-06-15T00:16:15+00:00 2026-06-15T00:16:15+00:00

I’ve created a custom theme based largely on the Twenty Eleven theme. I’m trying

  • 0

I’ve created a custom theme based largely on the Twenty Eleven theme. I’m trying to add theme options. On the theme options page I’ve created a text field for “Header Font Family” and “General Font Family” with the idea that the user should be able to replace the default fonts with any font family they like to change the fonts in their theme. The defaults work (add CSS code to the site) but if I try to change the text in the text boxes, the new settings won’t save and the defaults are reloaded in the text box of the options page. Other non-text box options will update correctly when changed.

Below is the code for theme-options.php. Any help is much appreciated, I can provide more code if necessary (options.php? functions.php?).

    <?php
/**
 * Somewhere In Between Theme Options
 *
 * @package WordPress
 * @subpackage Somewhere_In_Between
 * @since Somewhere In Between 1.0
 */

/**
 * Properly enqueue styles and scripts for our theme options page.
 *
 * This function is attached to the admin_enqueue_scripts action hook.
 *
 * @since Somewhere In Between 1.0
 *
 */
function somewhereinbetween_admin_enqueue_scripts( $hook_suffix ) {
    wp_enqueue_style( 'somewhereinbetween-theme-options', get_template_directory_uri() . '/inc/theme-options.css', false, '2011-04-28' );
    wp_enqueue_script( 'somewhereinbetween-theme-options', get_template_directory_uri() . '/inc/theme-options.js', array( 'farbtastic' ), '2011-06-10' );
    wp_enqueue_style( 'farbtastic' );
}
add_action( 'admin_print_styles-appearance_page_theme_options', 'somewhereinbetween_admin_enqueue_scripts' );

/**
 * Register the form setting for our somewhereinbetween_options array.
 *
 * This function is attached to the admin_init action hook.
 *
 * This call to register_setting() registers a validation callback, somewhereinbetween_theme_options_validate(),
 * which is used when the option is saved, to ensure that our option values are complete, properly
 * formatted, and safe.
 *
 * @since Somewhere In Between 1.0
 */
function somewhereinbetween_theme_options_init() {

    register_setting(
        'somewhereinbetween_options',       // Options group, see settings_fields() call in somewhereinbetween_theme_options_render_page()
        'somewhereinbetween_theme_options', // Database option, see somewhereinbetween_get_theme_options()
        'somewhereinbetween_theme_options_validate' // The sanitization callback, see somewhereinbetween_theme_options_validate()
    );

    // Register our settings field group
    add_settings_section(
        'general', // Unique identifier for the settings section
        '', // Section title (we don't want one)
        '__return_false', // Section callback (we don't want anything)
        'theme_options' // Menu slug, used to uniquely identify the page; see somewhereinbetween_theme_options_add_page()
    );

    // Register our individual settings fields
    add_settings_field( 'header_font_family', __( 'Header Font Family',     'somewhereinbetween' ), 'somewhereinbetween_settings_field_header_font_family', 'theme_options', 'general' );
    add_settings_field( 'general_font_family', __( 'General Font Family',     'somewhereinbetween' ), 'somewhereinbetween_settings_field_general_font_family', 'theme_options', 'general' );
    add_settings_field( 'link_color', __( 'Link Color',     'somewhereinbetween' ), 'somewhereinbetween_settings_field_link_color', 'theme_options', 'general' );
    add_settings_field( 'layout',     __( 'Default Layout', 'somewhereinbetween' ), 'somewhereinbetween_settings_field_layout',     'theme_options', 'general' );
}
add_action( 'admin_init', 'somewhereinbetween_theme_options_init' );

/**
 * Change the capability required to save the 'somewhereinbetween_options' options group.
 *
 * @see somewhereinbetween_theme_options_init() First parameter to register_setting() is the name of the options group.
 * @see somewhereinbetween_theme_options_add_page() The edit_theme_options capability is used for viewing the page.
 *
 * By default, the options groups for all registered settings require the manage_options capability.
 * This filter is required to change our theme options page to edit_theme_options instead.
 * By default, only administrators have either of these capabilities, but the desire here is
 * to allow for finer-grained control for roles and users.
 *
 * @param string $capability The capability used for the page, which is manage_options by default.
 * @return string The capability to actually use.
 */
function somewhereinbetween_option_page_capability( $capability ) {
    return 'edit_theme_options';
}
add_filter( 'option_page_capability_somewhereinbetween_options', 'somewhereinbetween_option_page_capability' );

/**
 * Add our theme options page to the admin menu, including some help documentation.
 *
 * This function is attached to the admin_menu action hook.
 *
 * @since Somewhere In Between 1.0
 */
function somewhereinbetween_theme_options_add_page() {
    $theme_page = add_theme_page(
        __( 'Theme Options', 'somewhereinbetween' ),   // Name of page
        __( 'Theme Options', 'somewhereinbetween' ),   // Label in menu
        'edit_theme_options',                    // Capability required
        'theme_options',                         // Menu slug, used to uniquely identify the page
        'somewhereinbetween_theme_options_render_page' // Function that renders the options page
    );

    if ( ! $theme_page )
        return;

    add_action( "load-$theme_page", 'somewhereinbetween_theme_options_help' );
}
add_action( 'admin_menu', 'somewhereinbetween_theme_options_add_page' );

function somewhereinbetween_theme_options_help() {

    $help = '<p>' . __( 'Some themes provide customization options that are grouped together on a Theme Options screen. If you change themes, options may change or disappear, as they are theme-specific. Your current theme, Somewhere In Between, provides the following Theme Options:', 'somewhereinbetween' ) . '</p>' .
            '<ol>' .
                '<li>' . __( '<strong>Link Color</strong>: You can choose the color used for text links on your site. You can enter the HTML color or hex code, or you can choose visually by clicking the "Select a Color" button to pick from a color wheel.', 'somewhereinbetween' ) . '</li>' .
                '<li>' . __( '<strong>Default Layout</strong>: You can choose if you want your site&#8217;s default layout to have a sidebar on the left or the right.', 'somewhereinbetween' ) . '</li>' .
            '</ol>' .
            '<p>' . __( 'Remember to click "Save Changes" to save any changes you have made to the theme options.', 'somewhereinbetween' ) . '</p>';

    $sidebar = '<p><strong>' . __( 'For more information:', 'somewhereinbetween' ) . '</strong></p>' .
        '<p>' . __( '<a href="http://codex.wordpress.org/Appearance_Theme_Options_Screen" target="_blank">Documentation on Theme Options</a>', 'somewhereinbetween' ) . '</p>' .
        '<p>' . __( '<a href="http://wordpress.org/support/" target="_blank">Support Forums</a>', 'somewhereinbetween' ) . '</p>';

    $screen = get_current_screen();

    if ( method_exists( $screen, 'add_help_tab' ) ) {
        // WordPress 3.3
        $screen->add_help_tab( array(
            'title' => __( 'Overview', 'somewhereinbetween' ),
            'id' => 'theme-options-help',
            'content' => $help,
            )
        );

        $screen->set_help_sidebar( $sidebar );
    } else {
        // WordPress 3.2
        add_contextual_help( $screen, $help . $sidebar );
    }
}

/**
 * Returns an array of color schemes registered for Somewhere In Between.
 *
 * @since Somewhere In Between 1.0
 */
function somewhereinbetween_color_schemes() {
    $color_scheme_options = array(
        'light' => array(
            'value' => 'light',
            'label' => __( 'Light', 'somewhereinbetween' ),
            'thumbnail' => get_template_directory_uri() . '/inc/images/light.png',
            'default_link_color' => '#1b8be0',
            'default_header_font_family' => 'Futura, "Trebuchet MS", Arial, sans-serif',
            'default_general_font_family' => 'Verdana, Arial, Helvetica, sans-serif',
        ),
        'dark' => array(
            'value' => 'dark',
            'label' => __( 'Dark', 'somewhereinbetween' ),
            'thumbnail' => get_template_directory_uri() . '/inc/images/dark.png',
            'default_link_color' => '#e4741f',
            'default_header_font_family' => 'Futura, "Trebuchet MS", Arial, sans-serif',
            'default_general_font_family' => 'Verdana, Arial, Helvetica, sans-serif',
        ),
    );

    return apply_filters( 'somewhereinbetween_color_schemes', $color_scheme_options );
}

/**
 * Returns an array of layout options registered for Somewhere In Between.
 *
 * @since Somewhere In Between 1.0
 */
function somewhereinbetween_layouts() {
    $layout_options = array(
        'content-sidebar' => array(
            'value' => 'content-sidebar',
            'label' => __( 'Content on left', 'somewhereinbetween' ),
            'thumbnail' => get_template_directory_uri() . '/inc/images/content-sidebar.png',
        ),
        'sidebar-content' => array(
            'value' => 'sidebar-content',
            'label' => __( 'Content on right', 'somewhereinbetween' ),
            'thumbnail' => get_template_directory_uri() . '/inc/images/sidebar-content.png',
        ),
    );

    return apply_filters( 'somewhereinbetween_layouts', $layout_options );
}

/**
 * Returns the default options for Somewhere In Between.
 *
 * @since Somewhere In Between 1.0
 */
function somewhereinbetween_get_default_theme_options() {
    $default_theme_options = array(
        'color_scheme' => 'light',
        'link_color'   => somewhereinbetween_get_default_link_color( 'light' ),
        'header_font_family'   => somewhereinbetween_get_default_header_font_family( 'light' ),
        'general_font_family'   => somewhereinbetween_get_default_general_font_family( 'light' ),
        'theme_layout' => 'content-sidebar',
    );

    if ( is_rtl() )
        $default_theme_options['theme_layout'] = 'sidebar-content';

    return apply_filters( 'somewhereinbetween_default_theme_options', $default_theme_options );
}

/**
 * Returns the default link color for Somewhere In Between, based on color scheme.
 *
 * @since Somewhere In Between 1.0
 *
 * @param $string $color_scheme Color scheme. Defaults to the active color scheme.
 * @return $string Color.
*/
function somewhereinbetween_get_default_link_color( $color_scheme = null ) {
    if ( null === $color_scheme ) {
        $options = somewhereinbetween_get_theme_options();
        $color_scheme = $options['color_scheme'];
    }

    $color_schemes = somewhereinbetween_color_schemes();
    if ( ! isset( $color_schemes[ $color_scheme ] ) )
        return false;

    return $color_schemes[ $color_scheme ]['default_link_color'];
}

/**
 * Returns the default header font family for Somewhere In Between, based on color scheme.
 *
 * @since Somewhere In Between 1.0
 *
 * @param $string $color_scheme Color scheme. Defaults to the active color scheme.
 * @return $string Color.
*/
function somewhereinbetween_get_default_header_font_family( $color_scheme = null ) {
    if ( null === $color_scheme ) {
        $options = somewhereinbetween_get_theme_options();
        $color_scheme = $options['color_scheme'];
    }

    $color_schemes = somewhereinbetween_color_schemes();
    if ( ! isset( $color_schemes[ $color_scheme ] ) )
        return false;

    return $color_schemes[ $color_scheme ]['default_header_font_family'];
}

/**
 * Returns the default general font family for Somewhere In Between, based on color scheme.
 *
 * @since Somewhere In Between 1.0
 *
 * @param $string $color_scheme Color scheme. Defaults to the active color scheme.
 * @return $string Color.
*/
function somewhereinbetween_get_default_general_font_family( $color_scheme = null ) {
    if ( null === $color_scheme ) {
        $options = somewhereinbetween_get_theme_options();
        $color_scheme = $options['color_scheme'];
    }

    $color_schemes = somewhereinbetween_color_schemes();
    if ( ! isset( $color_schemes[ $color_scheme ] ) )
        return false;

    return $color_schemes[ $color_scheme ]['default_general_font_family'];
}

/**
 * Returns the options array for Somewhere In Between.
 *
 * @since Somewhere In Between 1.0
 */
function somewhereinbetween_get_theme_options() {
    return get_option( 'somewhereinbetween_theme_options', somewhereinbetween_get_default_theme_options() );
}

/**
 * Renders the Color Scheme setting field.
 *
 * @since Somewhere In Between 1.0
 */
function somewhereinbetween_settings_field_color_scheme() {
    $options = somewhereinbetween_get_theme_options();

    foreach ( somewhereinbetween_color_schemes() as $scheme ) {
    ?>
    <div class="layout image-radio-option color-scheme">
    <label class="description">
        <input type="radio" name="somewhereinbetween_theme_options[color_scheme]" value="<?php echo esc_attr( $scheme['value'] ); ?>" <?php checked( $options['color_scheme'], $scheme['value'] ); ?> />
        <input type="hidden" id="default-color-<?php echo esc_attr( $scheme['value'] ); ?>" value="<?php echo esc_attr( $scheme['default_link_color'] ); ?>" />
        <input type="hidden" id="default-header-font-family-<?php echo esc_attr( $scheme['value'] ); ?>" value="<?php echo esc_attr( $scheme['default_header_font_family'] ); ?>" />
        <input type="hidden" id="default-general-font-family-<?php echo esc_attr( $scheme['value'] ); ?>" value="<?php echo esc_attr( $scheme['default_general_font_family'] ); ?>" />
        <span>
            <img src="<?php echo esc_url( $scheme['thumbnail'] ); ?>" width="136" height="122" alt="" />
            <?php echo $scheme['label']; ?>
        </span>
    </label>
    </div>
    <?php
    }
}

/**
 * Renders the Link Color setting field.
 *
 * @since Somewhere In Between 1.0
 */
function somewhereinbetween_settings_field_link_color() {
    $options = somewhereinbetween_get_theme_options();
    ?>
    <input type="text" name="somewhereinbetween_theme_options[link_color]" id="link-color" value="<?php echo esc_attr( $options['link_color'] ); ?>" />
    <a href="#" class="pickcolor hide-if-no-js" id="link-color-example"></a>
    <input type="button" class="pickcolor button hide-if-no-js" value="<?php esc_attr_e( 'Select a Color', 'somewhereinbetween' ); ?>" />
    <div id="colorPickerDiv" style="z-index: 100; background:#eee; border:1px solid #ccc; position:absolute; display:none;"></div>
    <br />
    <span><?php printf( __( 'Default color: %s', 'somewhereinbetween' ), '<span id="default-color">' . somewhereinbetween_get_default_link_color( $options['color_scheme'] ) . '</span>' ); ?></span>
    <?php
}

/**
 * Renders the Header Font Family setting field.
 *
 * @since Somewhere In Between 1.0
 */
function somewhereinbetween_settings_field_header_font_family() {
    $options = somewhereinbetween_get_theme_options();
    ?>
    <input type="text" name="somewhereinbetween_theme_options[header_font_family]" id="header-font-family" value="<?php echo esc_attr( $options['header_font_family'] ); ?>" />
    <br />
    <span><?php printf( __( 'Default header font family: %s', 'somewhereinbetween' ), '<span id="default-header-font-family">' . somewhereinbetween_get_default_header_font_family ( $options['color_scheme'] ) . '</span>' ); ?></span>
    <?php
}

/**
 * Renders the General Font Family setting field.
 *
 * @since Somewhere In Between 1.0
 */
function somewhereinbetween_settings_field_general_font_family() {
    $options = somewhereinbetween_get_theme_options();
    ?>
    <input type="text" name="somewhereinbetween_theme_options[general_font_family]" id="general-font-family" value="<?php echo esc_attr( $options['general_font_family'] ); ?>" />
    <br />
    <span><?php printf( __( 'Default general font family: %s', 'somewhereinbetween' ), '<span id="default-general-font-family">' . somewhereinbetween_get_default_general_font_family ( $options['color_scheme'] ) . '</span>' ); ?></span>
    <?php
}

/**
 * Renders the Layout setting field.
 *
 * @since Somewhere In Between 1.0
 */
function somewhereinbetween_settings_field_layout() {
    $options = somewhereinbetween_get_theme_options();
    foreach ( somewhereinbetween_layouts() as $layout ) {
        ?>
        <div class="layout image-radio-option theme-layout">
        <label class="description">
            <input type="radio" name="somewhereinbetween_theme_options[theme_layout]" value="<?php echo esc_attr( $layout['value'] ); ?>" <?php checked( $options['theme_layout'], $layout['value'] ); ?> />
            <span>
                <img src="<?php echo esc_url( $layout['thumbnail'] ); ?>" width="136" height="122" alt="" />
                <?php echo $layout['label']; ?>
            </span>
        </label>
        </div>
        <?php
    }
}

/**
 * Returns the options array for Somewhere In Between.
 *
 * @since Somewhere In Between 1.2
 */
function somewhereinbetween_theme_options_render_page() {
    ?>
    <div class="wrap">
        <?php screen_icon(); ?>
        <?php $theme_name = function_exists( 'wp_get_theme' ) ? wp_get_theme() : get_current_theme(); ?>
        <h2><?php printf( __( '%s Theme Options', 'somewhereinbetween' ), $theme_name ); ?></h2>
        <?php settings_errors(); ?>

        <form method="post" action="options.php">
            <?php
                settings_fields( 'somewhereinbetween_options' );
                do_settings_sections( 'theme_options' );
                submit_button();
            ?>
        </form>
    </div>
    <?php
}

/**
 * Sanitize and validate form input. Accepts an array, return a sanitized array.
 *
 * @see somewhereinbetween_theme_options_init()
 * @todo set up Reset Options action
 *
 * @since Somewhere In Between 1.0
 */
function somewhereinbetween_theme_options_validate( $input ) {
    $output = $defaults = somewhereinbetween_get_default_theme_options();

    // Color scheme must be in our array of color scheme options
    if ( isset( $input['color_scheme'] ) && array_key_exists( $input['color_scheme'], somewhereinbetween_color_schemes() ) )
        $output['color_scheme'] = $input['color_scheme'];

    // Our defaults for the header/general font families andlink color may have changed, based on the color scheme.
    $output['link_color'] = $defaults['link_color'] = somewhereinbetween_get_default_link_color( $output['color_scheme'] );

    // Link color must be 3 or 6 hexadecimal characters
    if ( isset( $input['link_color'] ) && preg_match( '/^#?([a-f0-9]{3}){1,2}$/i', $input['link_color'] ) )
        $output['link_color'] = '#' . strtolower( ltrim( $input['link_color'], '#' ) );

    // Theme layout must be in our array of theme layout options
    if ( isset( $input['theme_layout'] ) && array_key_exists( $input['theme_layout'], somewhereinbetween_layouts() ) )
        $output['theme_layout'] = $input['theme_layout'];

    return apply_filters( 'somewhereinbetween_theme_options_validate', $output, $input, $defaults );
}

/**
 * Enqueue the styles for the current color scheme.
 *
 * @since Somewhere In Between 1.0
 */
function somewhereinbetween_enqueue_color_scheme() {
    $options = somewhereinbetween_get_theme_options();
    $color_scheme = $options['color_scheme'];

    if ( 'dark' == $color_scheme )
        wp_enqueue_style( 'dark', get_template_directory_uri() . '/colors/dark.css', array(), null );

    do_action( 'somewhereinbetween_enqueue_color_scheme', $color_scheme );
}
add_action( 'wp_enqueue_scripts', 'somewhereinbetween_enqueue_color_scheme' );

/**
 * Add a style block to the theme for the current link color.
 *
 * This function is attached to the wp_head action hook.
 *
 * @since Somewhere In Between 1.0
 */
function somewhereinbetween_print_link_color_style() {
    $options = somewhereinbetween_get_theme_options();
    $link_color = $options['link_color'];

    $default_options = somewhereinbetween_get_default_theme_options();

    // Don't do anything if the current link color is the default.
    if ( $default_options['link_color'] == $link_color )
        return;
?>
    <style>
        /* Link color */
        a,
        #site-title a:focus,
        #site-title a:hover,
        #site-title a:active,
        .entry-title a:hover,
        .entry-title a:focus,
        .entry-title a:active,
        .widget_somewhereinbetween_ephemera .comments-link a:hover,
        section.recent-posts .other-recent-posts a[rel="bookmark"]:hover,
        section.recent-posts .other-recent-posts .comments-link a:hover,
        .format-image footer.entry-meta a:hover,
        #site-generator a:hover, #access ul a:hover
        { color: <?php echo $link_color; ?>; }
        section.recent-posts .other-recent-posts .comments-link a:hover {
            border-color: <?php echo $link_color; ?>;
        }
        article.feature-image.small .entry-summary p a:hover,
        .entry-header .comments-link a:hover,
        .entry-header .comments-link a:focus,
        .entry-header .comments-link a:active,
        .feature-slider a.active {
            background-color: <?php echo $link_color; ?>;
        }
    </style>
<?php
}
add_action( 'wp_head', 'somewhereinbetween_print_link_color_style' );

/**
 * Add a style block to the theme for the current header font family.
 *
 * This function is attached to the wp_head action hook.
 *
 * @since Somewhere In Between 1.0
 */
function somewhereinbetween_print_header_font_family() {
    $options = somewhereinbetween_get_theme_options();
    $header_font_family = $options['header_font_family'];

    $default_options = somewhereinbetween_get_default_theme_options();

?>
    <style>
        /* Header font family */
        h1,h2,h3,h4,h5,h6, #access,
        #site-title,
        .entry-title,
        { font-family: <?php echo $header_font_family; ?>; }
    </style>
<?php
}
add_action( 'wp_head', 'somewhereinbetween_print_header_font_family' );

/**
 * Add a style block to the theme for the current general font family.
 *
 * This function is attached to the wp_head action hook.
 *
 * @since Somewhere In Between 1.0
 */
function somewhereinbetween_print_general_font_family() {
    $options = somewhereinbetween_get_theme_options();
    $general_font_family = $options['general_font_family'];

    $default_options = somewhereinbetween_get_default_theme_options();

?>
    <style>
        /* General font family */
        #page
        { font-family: <?php echo $general_font_family; ?>; }
    </style>
<?php
}
add_action( 'wp_head', 'somewhereinbetween_print_general_font_family' );

/**
 * Adds Somewhere In Between layout classes to the array of body classes.
 *
 * @since Somewhere In Between 1.0
 */
function somewhereinbetween_layout_classes( $existing_classes ) {
    $options = somewhereinbetween_get_theme_options();
    $current_layout = $options['theme_layout'];

    if ( in_array( $current_layout, array( 'content-sidebar', 'sidebar-content' ) ) )
        $classes = array( 'two-column' );
    else
        $classes = array( 'one-column' );

    if ( 'content-sidebar' == $current_layout )
        $classes[] = 'right-sidebar';
    elseif ( 'sidebar-content' == $current_layout )
        $classes[] = 'left-sidebar';
    else
        $classes[] = $current_layout;

    $classes = apply_filters( 'somewhereinbetween_layout_classes', $classes, $current_layout );

    return array_merge( $existing_classes, $classes );
}
add_filter( 'body_class', 'somewhereinbetween_layout_classes' );

/**
 * Implements Somewhere In Between theme options into Theme Customizer
 *
 * @param $wp_customize Theme Customizer object
 * @return void
 *
 * @since Somewhere In Between 1.0
 */
function somewhereinbetween_customize_register( $wp_customize ) {
    $wp_customize->get_setting( 'blogname' )->transport = 'postMessage';
    $wp_customize->get_setting( 'blogdescription' )->transport = 'postMessage';

    $options  = somewhereinbetween_get_theme_options();
    $defaults = somewhereinbetween_get_default_theme_options();

    $wp_customize->add_setting( 'somewhereinbetween_theme_options[color_scheme]', array(
        'default'    => $defaults['color_scheme'],
        'type'       => 'option',
        'capability' => 'edit_theme_options',
    ) );

    $schemes = somewhereinbetween_color_schemes();
    $choices = array();
    foreach ( $schemes as $scheme ) {
        $choices[ $scheme['value'] ] = $scheme['label'];
    }

    // Link Color (added to Color Scheme section in Theme Customizer)
    $wp_customize->add_setting( 'somewhereinbetween_theme_options[link_color]', array(
        'default'           => somewhereinbetween_get_default_link_color( $options['color_scheme'] ),
        'type'              => 'option',
        'sanitize_callback' => 'sanitize_hex_color',
        'capability'        => 'edit_theme_options',
    ) );

    $wp_customize->add_control( new WP_Customize_Color_Control( $wp_customize, 'link_color', array(
        'label'    => __( 'Link Color', 'somewhereinbetween' ),
        'section'  => 'colors',
        'settings' => 'somewhereinbetween_theme_options[link_color]',
    ) ) );

    $wp_customize->add_setting( 'somewhereinbetween_theme_options[header_font_family]', array(
        'default'           => somewhereinbetween_get_default_header_font_family( $options['color_scheme'] ),
        'type'              => 'option',
        'sanitize_callback' => 'sanitize_key',
        'capability'        => 'edit_theme_options',
    ) );

    $wp_customize->add_setting( 'somewhereinbetween_theme_options[general_font_family]', array(
        'default'           => somewhereinbetween_get_default_general_font_family( $options['color_scheme'] ),
        'type'              => 'option',
        'sanitize_callback' => 'sanitize_key',
        'capability'        => 'edit_theme_options',
    ) );

    // Default Layout
    $wp_customize->add_section( 'somewhereinbetween_layout', array(
        'title'    => __( 'Layout', 'somewhereinbetween' ),
        'priority' => 50,
    ) );

    $wp_customize->add_setting( 'somewhereinbetween_theme_options[theme_layout]', array(
        'type'              => 'option',
        'default'           => $defaults['theme_layout'],
        'sanitize_callback' => 'sanitize_key',
    ) );

    $layouts = somewhereinbetween_layouts();
    $choices = array();
    foreach ( $layouts as $layout ) {
        $choices[$layout['value']] = $layout['label'];
    }

    $wp_customize->add_control( 'somewhereinbetween_theme_options[theme_layout]', array(
        'section'    => 'somewhereinbetween_layout',
        'type'       => 'radio',
        'choices'    => $choices,
    ) );
}
add_action( 'customize_register', 'somewhereinbetween_customize_register' );

/**
 * Bind JS handlers to make Theme Customizer preview reload changes asynchronously.
 * Used with blogname and blogdescription.
 *
 * @since Somewhere In Between 1.3
 */
function somewhereinbetween_customize_preview_js() {
    wp_enqueue_script( 'somewhereinbetween-customizer', get_template_directory_uri() . '/inc/theme-customizer.js', array( 'customize-preview' ), '20120523', true );
}
add_action( 'customize_preview_init', 'somewhereinbetween_customize_preview_js' );
  • 1 1 Answer
  • 0 Views
  • 0 Followers
  • 0
Share
  • Facebook
  • Report

Leave an answer
Cancel reply

You must login to add an answer.

Forgot Password?

Need An Account, Sign Up Here

1 Answer

  • Voted
  • Oldest
  • Recent
  • Random
  1. Editorial Team
    Editorial Team
    2026-06-15T00:16:16+00:00Added an answer on June 15, 2026 at 12:16 am

    Take a look at your register_setting() sanitization callback; it appears that you’ve not added your options:

    function somewhereinbetween_theme_options_validate( $input ) {
        $output = $defaults = somewhereinbetween_get_default_theme_options();
    
        // Color scheme must be in our array of color scheme options
        if ( isset( $input['color_scheme'] ) && array_key_exists( $input['color_scheme'], somewhereinbetween_color_schemes() ) )
            $output['color_scheme'] = $input['color_scheme'];
    
        // Our defaults for the header/general font families andlink color may have changed, based on the color scheme.
        $output['link_color'] = $defaults['link_color'] = somewhereinbetween_get_default_link_color( $output['color_scheme'] );
    
        // Link color must be 3 or 6 hexadecimal characters
        if ( isset( $input['link_color'] ) && preg_match( '/^#?([a-f0-9]{3}){1,2}$/i', $input['link_color'] ) )
            $output['link_color'] = '#' . strtolower( ltrim( $input['link_color'], '#' ) );
    
        // Theme layout must be in our array of theme layout options
        if ( isset( $input['theme_layout'] ) && array_key_exists( $input['theme_layout'], somewhereinbetween_layouts() ) )
            $output['theme_layout'] = $input['theme_layout'];
    
        return apply_filters( 'somewhereinbetween_theme_options_validate', $output, $input, $defaults );
    }
    

    When using the Settings API, via register_setting(), all settings must be whitelisted via the sanitization callback. So, you need to add handling for $input['header-font-family'] and $input['general-font-family'].

    If you’re allowing for text entry, then you’ll want to sanitize (e.g. by passing through wp_filter_nohtml_kses()), but you’ll also want to validate (i.e. some way to assure that the entered text is a valid font family).

    • 0
    • Reply
    • Share
      Share
      • Share on Facebook
      • Share on Twitter
      • Share on LinkedIn
      • Share on WhatsApp
      • Report

Sidebar

Related Questions

I'm trying to convert HTML to plain text. I get many &\#8217; &\#8220; etc.
Basically, what I'm trying to create is a page of div tags, each has
I have a string like this: La Torre Eiffel paragonata all&#8217;Everest What PHP function
I am trying to understand how to use SyndicationItem to display feed which is
link Im having trouble converting the html entites into html characters, (&# 8217;) i
That's pretty much it. I'm using Nokogiri to scrape a web page what has
For some reason, after submitting a string like this Jack’s Spindle from a text
Configuring TinyMCE to allow for tags, based on a customer requirement. My config is
I have a small JavaScript validation script that validates inputs based on Regex. I
I am trying to render a haml file in a javascript response like so:

Explore

  • Home
  • Add group
  • Groups page
  • Communities
  • Questions
    • New Questions
    • Trending Questions
    • Must read Questions
    • Hot Questions
  • Polls
  • Tags
  • Badges
  • Users
  • Help
  • SEARCH

Footer

© 2021 The Archive Base. All Rights Reserved
With Love by The Archive Base

Insert/edit link

Enter the destination URL

Or link to existing content

    No search term specified. Showing recent items. Search or use up and down arrow keys to select an item.