diff --git a/functions.php b/functions.php
index db8ab02..8cbbe30 100644
--- a/functions.php
+++ b/functions.php
@@ -1,7 +1,7 @@
'solid',
+ 'logo_url' => '',
+ 'logo_url_mobile' => '',
+ 'favicon_url' => '',
+ 'nav_primary_location' => 'full',
+ 'search_in_nav' => '',
+ 'read_more_text' => __( 'Read More »', 'trestle' ),
+ 'revisions_number' => 3,
+ 'footer_widgets_number' => 3,
+ 'external_link_icons' => 0,
+ 'email_link_icons' => 0,
+ 'pdf_link_icons' => 0,
+ 'doc_link_icons' => 0,
+ );
+
+ // Populate Trestle settings with default values if they don't yet exist.
+ $options = get_option( TRESTLE_SETTINGS_FIELD );
+
+ // Set up an empty array if we're running for the first time.
+ if ( ! $options ) {
+ $options = array();
+ }
+
+ // Bail early if the settings match the defaults.
+ if ( $options === $trestle_defaults ) {
+ return;
+ }
+
+ // Populate any defaults that are missing.
+ foreach ( $trestle_defaults as $k => $v ) {
+
+ // Check each key to only add the missing settings.
+ if ( ! array_key_exists( $k, $options ) ) {
+ $options[$k] = $v;
+ }
+ }
+
+ // Update options with defaults.
+ update_option( TRESTLE_SETTINGS_FIELD, $options );
+
+}
+
+/**
+ * Wrapper function to get Trestle options.
+ *
+ * @since 2.0.0
+ * @uses genesis_get_option()
+ *
+ * @return mixed Trestle option value.
+ */
+function trestle_get_option( $key, $setting = null, $use_cache = true ) {
+
+ // Set default to TRESTLE_SETTINGS_FIELD.
+ $setting = $setting ? $setting : TRESTLE_SETTINGS_FIELD;
+
+ return genesis_get_option( $key, $setting, false );
+
+}
+
add_action( 'admin_enqueue_scripts', 'trestle_admin_actions' );
/**
* Loads admin scripts and styles.
@@ -17,48 +87,7 @@ function trestle_admin_actions() {
// Include the main stylesheet in the editor
add_editor_style( get_stylesheet_uri() );
-}
-add_filter( 'genesis_theme_settings_defaults', 'trestle_custom_defaults' );
-/**
- * Sets up Trestle default settings.
- *
- * @since 1.0.0
- *
- * @param array $defaults Genesis default settings.
- * @return array Genesis settings updated to include Trestle defaults.
- */
-function trestle_custom_defaults( $defaults ) {
-
- // Trestle default key/value pairs
- $trestle_defaults = array(
- 'trestle_layout' => 'solid',
- 'trestle_logo_url' => '',
- 'trestle_logo_url_mobile' => '',
- 'trestle_favicon_url' => '',
- 'trestle_nav_primary_location' => 'full',
- 'trestle_read_more_text' => __( 'Read More »', 'trestle' ),
- 'trestle_revisions_number' => 3,
- 'trestle_footer_widgets_number' => 3,
- );
-
- // Populate Trestle settings with default values if they don't yet exist
- $options = get_option( GENESIS_SETTINGS_FIELD );
-
- foreach ( $trestle_defaults as $k => $v ) {
-
- // Add defaults to Genesis default settings array
- $defaults[$k] = $v;
-
- // Update actual options if they don't yet exist
- if ( $options && ! array_key_exists( $k, $options ) )
- $options[$k] = $v;
- }
-
- // Update options with defaults
- update_option( GENESIS_SETTINGS_FIELD, $options );
-
- return $defaults;
}
add_action( 'tgmpa_register', 'trestle_register_required_plugins' );
@@ -222,7 +251,7 @@ function trestle_register_required_plugins() {
),
);
- // Change this to your theme text domain, used for internationalising strings
+ // Change this to your theme text domain, used for internationalising strings.
$theme_text_domain = 'mightyminnow';
/**
diff --git a/includes/admin/customizer.js b/includes/admin/customizer.js
deleted file mode 100644
index 7a44eb4..0000000
--- a/includes/admin/customizer.js
+++ /dev/null
@@ -1,147 +0,0 @@
-/**
- * JavaScript for the Customizer Preview
- *
- * @since 1.0.0
- */
-
-( function( $ ) {
-
- // Layout
- wp.customize( 'genesis-settings[trestle_layout]', function( value ) {
- value.bind( function( value ) {
-
- var $body = $( 'body' );
-
- switch ( value ) {
- case 'solid':
- $body.removeClass( 'bubble' );
- break;
- case 'bubble':
- $body.addClass( 'bubble' );
- break;
- }
-
- });
- });
-
- // Custom logo
- wp.customize( 'genesis-settings[trestle_logo_url]', function( value ) {
- value.bind( function( url ) {
-
- var $body = $( 'body' );
-
- if ( 0 === $.trim( url ).length ) {
- $body.removeClass( 'has-logo' );
- $( '.site-title a.image-link' ).remove();
- } else {
- $body.addClass( 'has-logo' );
- $( '.site-title a.image-link' ).remove();
- $( '.site-title' ).append( '' );
- }
-
- });
- });
-
- // Favicon
- wp.customize( 'genesis-settings[trestle_favicon_url]', function( value ) {
- value.bind( function( url ) {
-
- var $faviconElem = $( 'link[rel="Shortcut Icon"]' );
- $faviconElem.attr( 'href', url );
-
- });
- });
-
- // Primary Nav Location
- wp.customize( 'genesis-settings[trestle_nav_primary_location]', function( value ) {
- value.bind( function( value ) {
-
- var $body = $( 'body' );
- var $nav = $( '.nav-primary' );
-
- switch ( value ) {
- case 'full':
- $body.removeClass( 'nav-primary-location-header' )
- .addClass( 'nav-primary-location-full' );
- $nav.remove().insertAfter( '.site-header' );
- break;
- case 'header':
- $body.removeClass( 'nav-primary-location-full' )
- .addClass( 'nav-primary-location-header' );
- $nav.remove().appendTo( '.site-header .wrap' );
- break;
- }
-
- });
- });
-
- // Custom Read More Link Text
- wp.customize( 'genesis-settings[trestle_read_more_text]', function( value ) {
- value.bind( function( value ) {
-
- $( 'a.more-link' ).html( value );
-
- });
- });
-
- // External Links
- wp.customize( 'genesis-settings[trestle_external_link_icons]', function( value ) {
- value.bind( function( value ) {
-
- var $body = $( 'body' );
-
- if ( value ) {
- $body.addClass( 'external-link-icons' );
- } else {
- $body.removeClass( 'external-link-icons' );
- }
-
- });
- });
-
- // Email Links
- wp.customize( 'genesis-settings[trestle_email_link_icons]', function( value ) {
- value.bind( function( value ) {
-
- var $body = $( 'body' );
-
- if ( value ) {
- $body.addClass( 'email-link-icons' );
- } else {
- $body.removeClass( 'email-link-icons' );
- }
-
- });
- });
-
- // PDF Links
- wp.customize( 'genesis-settings[trestle_pdf_link_icons]', function( value ) {
- value.bind( function( value ) {
-
- var $body = $( 'body' );
-
- if ( value ) {
- $body.addClass( 'pdf-link-icons' );
- } else {
- $body.removeClass( 'pdf-link-icons' );
- }
-
- });
- });
-
- // Doc Links
- wp.customize( 'genesis-settings[trestle_doc_link_icons]', function( value ) {
- value.bind( function( value ) {
-
- var $body = $( 'body' );
-
- if ( value ) {
- $body.addClass( 'doc-link-icons' );
- } else {
- $body.removeClass( 'doc-link-icons' );
- }
-
- });
- });
-
-})( jQuery );
diff --git a/includes/admin/customizer.php b/includes/admin/customizer.php
index 93df40a..72d6cb3 100644
--- a/includes/admin/customizer.php
+++ b/includes/admin/customizer.php
@@ -1,44 +1,27 @@
add_section(
'trestle_settings_section',
array(
@@ -47,317 +30,306 @@ function trestle_customizer_controls( $wp_customize ) {
)
);
- // Layout
+ // Layout.
$wp_customize->add_setting(
- 'genesis-settings[trestle_layout]',
+ 'trestle-settings[layout]',
array(
- 'default' => '',
- 'type' => 'option',
- 'transport' => 'postMessage',
- 'capability' => 'edit_theme_options',
- )
- );
- $wp_customize->add_control(
- 'trestle_layout_control',
- array(
- 'section' => 'trestle_settings_section',
- 'settings' => 'genesis-settings[trestle_layout]',
- 'label' => __( 'Layout', 'trestle' ),
- 'type' => 'radio',
- 'choices' => array(
- 'bubble' => __( 'Bubble', 'trestle' ),
- 'solid' => __( 'Solid', 'trestle' ),
- )
- )
- );
-
- // Upload a logo
- $wp_customize->add_setting(
- 'genesis-settings[trestle_logo_url]',
- array(
- 'default' => genesis_get_option( 'trestle_logo_url' ),
- 'type' => 'option',
- 'transport' => 'postMessage',
- 'capability' => 'edit_theme_options',
- )
- );
- $wp_customize->add_control(
- new WP_Customize_Image_Control(
- $wp_customize,
- 'trestle_logo_control',
- array(
- 'label' => __( 'Upload a logo', 'trestle' ),
- 'section' => 'trestle_settings_section',
- 'settings' => 'genesis-settings[trestle_logo_url]',
- )
- )
- );
-
- // Upload a mobile logo
- $wp_customize->add_setting(
- 'genesis-settings[trestle_logo_url_mobile]',
- array(
- 'default' => genesis_get_option( 'trestle_logo_url_mobile' ),
- 'type' => 'option',
- 'transport' => 'postMessage',
- 'capability' => 'edit_theme_options',
- )
- );
- $wp_customize->add_control(
- new WP_Customize_Image_Control(
- $wp_customize,
- 'trestle_mobile_logo_control',
- array(
- 'label' => __( 'Upload a mobile logo', 'trestle' ),
- 'section' => 'trestle_settings_section',
- 'settings' => 'genesis-settings[trestle_logo_url_mobile]',
- )
- )
- );
-
- // Upload a mobile logo
- $wp_customize->add_setting(
- 'genesis-settings[trestle_favicon_url]',
- array(
- 'default' => genesis_get_option( 'trestle_favicon_url' ),
- 'type' => 'option',
- 'transport' => 'postMessage',
- 'capability' => 'edit_theme_options',
- )
- );
- $wp_customize->add_control(
- new WP_Customize_Image_Control(
- $wp_customize,
- 'trestle_favicon_control',
- array(
- 'label' => __( 'Upload a favicon', 'trestle' ),
- 'section' => 'trestle_settings_section',
- 'settings' => 'genesis-settings[trestle_favicon_url]',
- )
- )
- );
-
- // Primary nav style
- $wp_customize->add_setting(
- 'genesis-settings[trestle_nav_primary_location]',
- array(
- 'default' => genesis_get_option( 'trestle_nav_primary_location' ),
- 'type' => 'option',
- 'transport' => 'postMessage',
- 'capability' => 'edit_theme_options',
- )
- );
- $wp_customize->add_control(
- 'trestle_nav_primary_location_control',
- array(
- 'section' => 'trestle_settings_section',
- 'settings' => 'genesis-settings[trestle_nav_primary_location]',
- 'label' => __( 'Menu style', 'trestle' ),
- 'type' => 'select',
- 'choices' => array(
- 'full' => __( 'Full Width', 'trestle' ),
- 'header' => __( 'Header Right', 'trestle' ),
- )
- )
- );
-
- // Primary nav extras
- $wp_customize->add_setting(
- 'genesis-settings[trestle_custom_nav_extras_text]',
- array(
- 'default' => genesis_get_option( 'trestle_custom_nav_extras_text' ),
- 'type' => 'option',
- 'transport' => 'postMessage',
- 'capability' => 'edit_theme_options',
- )
- );
- $wp_customize->add_control(
- 'trestle_custom_nav_extras_text_control',
- array(
- 'section' => 'trestle_settings_section',
- 'settings' => 'genesis-settings[trestle_custom_nav_extras_text]',
- 'label' => __( 'Add search to mobile navigation', 'trestle' ),
- 'type' => 'checkbox',
- )
- );
-
- // Blog post custom read more link text
- $wp_customize->add_setting(
- 'genesis-settings[trestle_read_more_text]',
- array(
- 'default' => genesis_get_option( 'trestle_read_more_text' ),
+ 'default' => trestle_get_option( 'layout' ),
+ 'type' => 'option',
+ 'capability' => 'edit_theme_options',
+ )
+ );
+ $wp_customize->add_control(
+ 'trestle_layout_control',
+ array(
+ 'section' => 'trestle_settings_section',
+ 'settings' => 'trestle-settings[layout]',
+ 'label' => __( 'Layout', 'trestle' ),
+ 'type' => 'radio',
+ 'choices' => array(
+ 'bubble' => __( 'Bubble', 'trestle' ),
+ 'solid' => __( 'Solid', 'trestle' ),
+ )
+ )
+ );
+
+ // Upload a logo.
+ $wp_customize->add_setting(
+ 'trestle-settings[logo_url]',
+ array(
+ 'default' => trestle_get_option( 'logo_url' ),
+ 'type' => 'option',
+ 'capability' => 'edit_theme_options',
+ 'sanitize_callback' => 'esc_url_raw',
+ )
+ );
+ $wp_customize->add_control(
+ new WP_Customize_Image_Control(
+ $wp_customize,
+ 'trestle_logo_control',
+ array(
+ 'label' => __( 'Upload a logo', 'trestle' ),
+ 'section' => 'trestle_settings_section',
+ 'settings' => 'trestle-settings[logo_url]',
+ )
+ )
+ );
+
+ // Upload a mobile logo.
+ $wp_customize->add_setting(
+ 'trestle-settings[logo_url_mobile]',
+ array(
+ 'default' => trestle_get_option( 'logo_url_mobile' ),
+ 'type' => 'option',
+ 'capability' => 'edit_theme_options',
+ 'sanitize_callback' => 'esc_url_raw',
+ )
+ );
+ $wp_customize->add_control(
+ new WP_Customize_Image_Control(
+ $wp_customize,
+ 'trestle_mobile_logo_control',
+ array(
+ 'label' => __( 'Upload a mobile logo', 'trestle' ),
+ 'section' => 'trestle_settings_section',
+ 'settings' => 'trestle-settings[logo_url_mobile]',
+ )
+ )
+ );
+
+ // Upload a mobile logo.
+ $wp_customize->add_setting(
+ 'trestle-settings[favicon_url]',
+ array(
+ 'default' => trestle_get_option( 'favicon_url' ),
+ 'type' => 'option',
+ 'capability' => 'edit_theme_options',
+ 'sanitize_callback' => 'esc_url_raw',
+ )
+ );
+ $wp_customize->add_control(
+ new WP_Customize_Image_Control(
+ $wp_customize,
+ 'trestle_favicon_control',
+ array(
+ 'label' => __( 'Upload a favicon', 'trestle' ),
+ 'section' => 'trestle_settings_section',
+ 'settings' => 'trestle-settings[favicon_url]',
+ )
+ )
+ );
+
+ // Primary nav style.
+ $wp_customize->add_setting(
+ 'trestle-settings[nav_primary_location]',
+ array(
+ 'default' => trestle_get_option( 'nav_primary_location' ),
+ 'type' => 'option',
+ 'capability' => 'edit_theme_options',
+ )
+ );
+ $wp_customize->add_control(
+ 'trestle_nav_primary_location_control',
+ array(
+ 'section' => 'trestle_settings_section',
+ 'settings' => 'trestle-settings[nav_primary_location]',
+ 'label' => __( 'Menu style', 'trestle' ),
+ 'type' => 'select',
+ 'choices' => array(
+ 'full' => __( 'Full Width', 'trestle' ),
+ 'header' => __( 'Header Right', 'trestle' ),
+ )
+ )
+ );
+
+ // Primary nav extras.
+ $wp_customize->add_setting(
+ 'trestle-settings[search_in_nav]',
+ array(
+ 'default' => trestle_get_option( 'search_in_nav' ),
+ 'type' => 'option',
+ 'capability' => 'edit_theme_options',
+ )
+ );
+ $wp_customize->add_control(
+ 'trestle_search_in_nav_control',
+ array(
+ 'section' => 'trestle_settings_section',
+ 'settings' => 'trestle-settings[search_in_nav]',
+ 'label' => __( 'Add search to mobile navigation', 'trestle' ),
+ 'type' => 'checkbox',
+ )
+ );
+
+ // Blog post custom read more link text.
+ $wp_customize->add_setting(
+ 'trestle-settings[read_more_text]',
+ array(
+ 'default' => trestle_get_option( 'read_more_text' ),
'type' => 'option',
- 'transport' => 'postMessage',
'capability' => 'edit_theme_options',
'sanitize_callback' => 'wp_kses_post',
)
);
$wp_customize->add_control(
- 'trestle_read_more_text_control',
- array(
- 'section' => 'trestle_settings_section',
- 'settings' => 'genesis-settings[trestle_read_more_text]',
- 'label' => __( 'Custom read more link text', 'trestle' ),
- )
- );
-
- // Post revisions number
- $wp_customize->add_setting(
- 'genesis-settings[trestle_revisions_number]',
+ 'trestle_read_more_text_control',
array(
- 'default' => genesis_get_option( 'trestle_revisions_number' ),
- 'type' => 'option',
- 'transport' => 'postMessage',
- 'capability' => 'edit_theme_options',
+ 'section' => 'trestle_settings_section',
+ 'settings' => 'trestle-settings[read_more_text]',
+ 'label' => __( 'Custom read more link text', 'trestle' ),
+ )
+ );
+
+ // Post revisions number.
+ $wp_customize->add_setting(
+ 'trestle-settings[revisions_number]',
+ array(
+ 'default' => trestle_get_option( 'revisions_number' ),
+ 'type' => 'option',
+ 'capability' => 'edit_theme_options',
)
);
$wp_customize->add_control(
- 'trestle_revisions_number_control',
- array(
- 'section' => 'trestle_settings_section',
- 'settings' => 'genesis-settings[trestle_revisions_number]',
- 'label' => __( 'Number of post revisions', 'trestle' ),
- 'type' => 'select',
- 'choices' => array(
- '-1' => __( 'Unlimited', 'trestle' ),
- '0' => '0',
- '1' => '1',
- '2' => '2',
- '3' => '3',
- '4' => '4',
- '5' => '5',
- '6' => '6',
- '7' => '7',
- '8' => '8',
- '9' => '9',
- '10' => '10',
- )
- )
- );
-
- // Footer Widget Areas
- $wp_customize->add_setting(
- 'genesis-settings[trestle_footer_widgets_number]',
+ 'trestle_revisions_number_control',
array(
- 'default' => genesis_get_option( 'trestle_footer_widgets_number' ),
- 'type' => 'option',
- 'transport' => 'postMessage',
- 'capability' => 'edit_theme_options',
+ 'section' => 'trestle_settings_section',
+ 'settings' => 'trestle-settings[revisions_number]',
+ 'label' => __( 'Number of post revisions', 'trestle' ),
+ 'type' => 'select',
+ 'choices' => array(
+ '-1' => __( 'Unlimited', 'trestle' ),
+ '0' => '0',
+ '1' => '1',
+ '2' => '2',
+ '3' => '3',
+ '4' => '4',
+ '5' => '5',
+ '6' => '6',
+ '7' => '7',
+ '8' => '8',
+ '9' => '9',
+ '10' => '10',
+ )
+ )
+ );
+
+ // Footer Widget Areas.
+ $wp_customize->add_setting(
+ 'trestle-settings[footer_widgets_number]',
+ array(
+ 'default' => trestle_get_option( 'footer_widgets_number' ),
+ 'type' => 'option',
+ 'capability' => 'edit_theme_options',
)
);
$wp_customize->add_control(
- 'trestle_footer_widgets_number_control',
- array(
- 'section' => 'trestle_settings_section',
- 'settings' => 'genesis-settings[trestle_footer_widgets_number]',
- 'label' => __( 'Number of footer widgets', 'trestle' ),
- 'type' => 'select',
- 'choices' => array(
- '0' => '0',
- '1' => '1',
- '2' => '2',
- '3' => '3',
- '4' => '4',
- '5' => '5',
- '6' => '6',
- )
- )
- );
-
- // Add a label for the link icons
- $wp_customize->add_setting(
- 'genesis-settings[trestle_link_icons_title]',
+ 'trestle_footer_widgets_number_control',
array(
- 'default' => '',
- 'type' => 'option',
- 'capability' => 'edit_theme_options',
+ 'section' => 'trestle_settings_section',
+ 'settings' => 'trestle-settings[footer_widgets_number]',
+ 'label' => __( 'Number of footer widgets', 'trestle' ),
+ 'type' => 'select',
+ 'choices' => array(
+ '0' => '0',
+ '1' => '1',
+ '2' => '2',
+ '3' => '3',
+ '4' => '4',
+ '5' => '5',
+ '6' => '6',
+ )
+ )
+ );
+
+ // Add a label for the link icons.
+ $wp_customize->add_setting(
+ 'trestle-settings[link_icons_title]',
+ array(
+ 'default' => '',
+ 'type' => 'option',
)
);
$wp_customize->add_control(
'trestle_link_icons_title',
array(
'section' => 'trestle_settings_section',
- 'settings' => 'genesis-settings[trestle_link_icons_title]',
+ 'settings' => 'trestle-settings[link_icons_title]',
'label' => __( 'Icon links', 'trestle' ),
'type' => 'hidden',
)
);
- // External Link Icons
+ // External Link Icons.
$wp_customize->add_setting(
- 'genesis-settings[trestle_external_link_icons]',
+ 'trestle-settings[external_link_icons]',
array(
- 'default' => genesis_get_option( 'trestle_external_link_icons' ),
- 'type' => 'option',
- 'transport' => 'postMessage',
- 'capability' => 'edit_theme_options',
+ 'default' => trestle_get_option( 'external_link_icons' ),
+ 'type' => 'option',
+ 'capability' => 'edit_theme_options',
)
);
$wp_customize->add_control(
'trestle_external_link_icons',
array(
'section' => 'trestle_settings_section',
- 'settings' => 'genesis-settings[trestle_external_link_icons]',
+ 'settings' => 'trestle-settings[external_link_icons]',
'label' => __( 'Add icons to external links', 'trestle' ),
'type' => 'checkbox',
)
);
- // E-mail Link Icons
+ // E-mail Link Icons.
$wp_customize->add_setting(
- 'genesis-settings[trestle_email_link_icons]',
+ 'trestle-settings[email_link_icons]',
array(
- 'default' => genesis_get_option( 'trestle_email_link_icons' ),
- 'type' => 'option',
- 'transport' => 'postMessage',
- 'capability' => 'edit_theme_options',
+ 'default' => trestle_get_option( 'email_link_icons' ),
+ 'type' => 'option',
+ 'capability' => 'edit_theme_options',
)
);
$wp_customize->add_control(
'trestle_email_link_icons',
array(
'section' => 'trestle_settings_section',
- 'settings' => 'genesis-settings[trestle_email_link_icons]',
+ 'settings' => 'trestle-settings[email_link_icons]',
'label' => __( 'Add icons to email links', 'trestle' ),
'type' => 'checkbox',
)
);
- // PDF Link Icons
+ // PDF Link Icons.
$wp_customize->add_setting(
- 'genesis-settings[trestle_pdf_link_icons]',
+ 'trestle-settings[pdf_link_icons]',
array(
- 'default' => genesis_get_option( 'trestle_pdf_link_icons' ),
- 'type' => 'option',
- 'transport' => 'postMessage',
- 'capability' => 'edit_theme_options',
+ 'default' => trestle_get_option( 'pdf_link_icons' ),
+ 'type' => 'option',
+ 'capability' => 'edit_theme_options',
)
);
$wp_customize->add_control(
'trestle_pdf_link_icons',
array(
'section' => 'trestle_settings_section',
- 'settings' => 'genesis-settings[trestle_pdf_link_icons]',
+ 'settings' => 'trestle-settings[pdf_link_icons]',
'label' => __( 'Add icons to .pdf links', 'trestle' ),
'type' => 'checkbox',
)
);
- // Doc Link Icons
+ // Doc Link Icons.
$wp_customize->add_setting(
- 'genesis-settings[trestle_doc_link_icons]',
+ 'trestle-settings[doc_link_icons]',
array(
- 'default' => genesis_get_option( 'trestle_doc_link_icons' ),
- 'type' => 'option',
- 'transport' => 'postMessage',
- 'capability' => 'edit_theme_options',
+ 'default' => trestle_get_option( 'doc_link_icons' ),
+ 'type' => 'option',
+ 'capability' => 'edit_theme_options',
)
);
$wp_customize->add_control(
'trestle_doc_link_icons',
array(
'section' => 'trestle_settings_section',
- 'settings' => 'genesis-settings[trestle_doc_link_icons]',
+ 'settings' => 'trestle-settings[doc_link_icons]',
'label' => __( 'Add icons to .doc links', 'trestle' ),
'type' => 'checkbox',
)
diff --git a/includes/functions/theme-functions.php b/includes/functions/theme-functions.php
index 0946233..2e864a3 100644
--- a/includes/functions/theme-functions.php
+++ b/includes/functions/theme-functions.php
@@ -9,6 +9,28 @@
* @package Trestle
*/
+/*===========================================
+ * Theme Setup
+===========================================*/
+add_action( 'after_setup_theme', 'trestle_add_theme_support' );
+/**
+ * Initialize Trestle defaults and theme options.
+ *
+ * @since 2.0.0
+ */
+function trestle_add_theme_support() {
+
+ // Add HTML5 markup structure.
+ add_theme_support( 'html5' );
+
+ // Add viewport meta tag for mobile browsers.
+ add_theme_support( 'genesis-responsive-viewport' );
+
+ // Add support for footer widgets if specified in Trestle settings.
+ add_theme_support( 'genesis-footer-widgets', trestle_get_option( 'footer_widgets_number' ) );
+
+}
+
/*===========================================
* 3rd Party Libraries
===========================================*/
@@ -21,8 +43,8 @@ add_action( 'init', 'trestle_load_bfa' );
*/
function trestle_load_bfa() {
- // Set the library initialization args
- $args = array(
+ // Set the library initialization args.
+ $args = array(
'version' => 'latest',
'minified' => true,
'remove_existing_fa' => false,
@@ -30,10 +52,10 @@ function trestle_load_bfa() {
'load_admin_styles' => true,
'load_shortcode' => true,
'load_tinymce_plugin' => true,
- );
+ );
- // Initialize the Better Font Awesome Library.
- Better_Font_Awesome_Library::get_instance( $args );
+ // Initialize the Better Font Awesome Library.
+ Better_Font_Awesome_Library::get_instance( $args );
}
@@ -49,26 +71,26 @@ add_action( 'wp_enqueue_scripts', 'trestle_header_actions' );
*/
function trestle_header_actions() {
- // Google fonts
+ // Google fonts.
wp_enqueue_style( 'theme-google-fonts', '//fonts.googleapis.com/css?family=Lato:300,400,700' );
- // Theme jQuery
- wp_enqueue_script( 'theme-jquery', get_stylesheet_directory_uri() . '/includes/js/theme-jquery.js', array( 'jquery' ), CHILD_THEME_VERSION, true );
+ // Theme jQuery.
+ wp_enqueue_script( 'theme-jquery', get_stylesheet_directory_uri() . '/includes/js/theme-jquery.js', array( 'jquery' ), TRESTLE_THEME_VERSION, true );
- // Get WP uploads directory
+ // Get WP uploads directory.
$upload_dir = wp_upload_dir();
$upload_path = $upload_dir['basedir'];
$upload_url = $upload_dir['baseurl'];
- // Custom CSS (if it exists)
+ // Custom CSS (if it exists).
$custom_css_file = '/trestle/custom.css';
if ( is_readable( $upload_path . $custom_css_file ) )
wp_enqueue_style( 'trestle-custom-css', $upload_url . $custom_css_file );
- // Custom jQuery (if it exists)
+ // Custom jQuery (if it exists).
$custom_js_file = '/trestle/custom.js';
if ( is_readable( $upload_path . $custom_js_file ) )
- wp_enqueue_script( 'trestle-custom-jquery', $upload_url . $custom_js_file, array( 'jquery' ), CHILD_THEME_VERSION, true );
+ wp_enqueue_script( 'trestle-custom-jquery', $upload_url . $custom_js_file, array( 'jquery' ), TRESTLE_THEME_VERSION, true );
}
@@ -83,7 +105,9 @@ add_filter( 'genesis_pre_load_favicon', 'trestle_do_custom_favicon' );
* @return string Custom favicon URL (if specified), or the default URL.
*/
function trestle_do_custom_favicon( $favicon_url ) {
- return genesis_get_option( 'trestle_favicon_url' ) ? genesis_get_option( 'trestle_favicon_url' ) : $favicon_url;
+
+ $trestle_favicon_url = trestle_get_option( 'favicon_url' );
+ return $trestle_favicon_url ? $trestle_favicon_url : $favicon_url;
}
/*===========================================
@@ -101,34 +125,49 @@ add_filter( 'body_class', 'trestle_body_classes' );
*/
function trestle_body_classes( $classes ) {
- // Add 'no-jquery' class to be removed by jQuery if enabled
+ // Add 'no-jquery' class to be removed by jQuery if enabled.
$classes[] = 'no-jquery';
- // Add 'bubble' class
- if ( 'bubble' == genesis_get_option( 'trestle_layout' ) )
+ // Add 'bubble' class.
+ if ( 'bubble' == trestle_get_option( 'layout' ) )
$classes[] = 'bubble';
- // Add link icon classes
- if ( genesis_get_option( 'trestle_external_link_icons' ) )
+ /**
+ * Add link icon classes.
+ */
+
+ if ( trestle_get_option( 'external_link_icons' ) ) {
$classes[] = 'external-link-icons';
- if ( genesis_get_option( 'trestle_email_link_icons' ) )
+ }
+
+ if ( trestle_get_option( 'email_link_icons' ) ) {
$classes[] = 'email-link-icons';
- if ( genesis_get_option( 'trestle_pdf_link_icons' ) )
+ }
+
+ if ( trestle_get_option( 'pdf_link_icons' ) ) {
$classes[] = 'pdf-link-icons';
- if ( genesis_get_option( 'trestle_doc_link_icons' ) )
+ }
+
+ if ( trestle_get_option( 'doc_link_icons' ) ) {
$classes[] = 'doc-link-icons';
+ }
- // Add menu style class
- if ( genesis_get_option( 'trestle_nav_primary_location' ) )
- $classes[] = 'nav-primary-location-' . esc_attr( genesis_get_option( 'trestle_nav_primary_location' ) );
+ // Add menu style class.
+ $nav_primary_location = esc_attr( trestle_get_option( 'nav_primary_location' ) );
+ if ( $nav_primary_location ) {
+ $classes[] = 'nav-primary-location-' . $nav_primary_location;
+ }
- // Add footer widget number class
- if ( genesis_get_option( 'trestle_footer_widgets_number' ) )
- $classes[] = 'footer-widgets-number-' . esc_attr( genesis_get_option( 'trestle_footer_widgets_number' ) );
+ // Add footer widget number class.
+ $footer_widgets_number = esc_attr( trestle_get_option( 'footer_widgets_number' ) );
+ if ( $footer_widgets_number ) {
+ $classes[] = 'footer-widgets-number-' . $footer_widgets_number;
+ }
- // Add logo class
- if ( genesis_get_option( 'trestle_logo_url' ) || genesis_get_option( 'trestle_logo_url_mobile' ) )
+ // Add logo class.
+ if ( trestle_get_option( 'logo_url' ) || trestle_get_option( 'logo_url_mobile' ) ) {
$classes[] = 'has-logo';
+ }
return $classes;
@@ -147,17 +186,17 @@ add_filter( 'genesis_seo_title', 'trestle_do_logos', 10, 3 );
*/
function trestle_do_logos( $title, $inside, $wrap ) {
- $logo_url = genesis_get_option( 'trestle_logo_url' );
- $logo_url_mobile = genesis_get_option( 'trestle_logo_url_mobile' );
+ $logo_url = trestle_get_option( 'logo_url' );
+ $logo_url_mobile = trestle_get_option( 'logo_url_mobile' );
$logo_html = '';
- // Regular logo
+ // Regular logo.
if ( $logo_url ) {
- // Default logo class
+ // Default logo class.
$classes = array('logo-full');
- // If no mobile logo is specified, make regular logo act as mobile logo too
+ // If no mobile logo is specified, make regular logo act as mobile logo too.
if( ! $logo_url_mobile )
$classes[] = 'show';
@@ -168,13 +207,13 @@ function trestle_do_logos( $title, $inside, $wrap ) {
);
}
- // Mobile logo
+ // Mobile logo.
if ( $logo_url_mobile ) {
- // Default mobile logo class
+ // Default mobile logo class.
$classes = array('logo-mobile');
- // If no regular logo is specified, make mobile logo act as regular logo too
+ // If no regular logo is specified, make mobile logo act as regular logo too.
if( ! $logo_url )
$classes[] = 'show';
@@ -193,12 +232,13 @@ function trestle_do_logos( $title, $inside, $wrap ) {
);
}
- // Build the title
+ // Build the title.
$title = genesis_html5() ? sprintf( "<{$wrap} %s>", genesis_attr( 'site-title' ) ) : sprintf( '<%s id="title">%s%s>', $wrap, $inside, $wrap );
$title .= genesis_html5() ? "{$inside}{$wrap}>" : '';
- // Echo (filtered)
+ // Echo (filtered).
return $title;
+
}
@@ -206,15 +246,18 @@ function trestle_do_logos( $title, $inside, $wrap ) {
* Navigation
===========================================*/
-add_action( 'init', 'trestle_nav_primary_location' );
+add_action( 'wp_loaded', 'trestle_nav_primary_location' );
/**
* Move primary navigation into the header if need be.
*
+ * This is hooked on wp_loaded instead of init because for some reason init
+ * won't fire on the customizer preview.
+ *
* @since 1.2.0
*/
function trestle_nav_primary_location() {
- if ( 'header' == genesis_get_option( 'trestle_nav_primary_location' ) ) {
+ if ( 'header' == trestle_get_option( 'nav_primary_location' ) ) {
remove_action( 'genesis_after_header', 'genesis_do_nav' );
add_action( 'genesis_header', 'genesis_do_nav', 12 );
}
@@ -233,7 +276,7 @@ add_filter( 'wp_nav_menu_items', 'trestle_custom_nav_extras', 10, 2 );
*/
function trestle_custom_nav_extras( $nav_items, stdClass $menu_args ) {
- if ( 'primary' == $menu_args->theme_location && genesis_get_option( 'trestle_custom_nav_extras_text' ) ) {
+ if ( 'primary' == $menu_args->theme_location && trestle_get_option( 'search_in_nav' ) ) {
return $nav_items . '
tags around shortcodes.
*
* @since 1.0.0
*
@@ -28,14 +28,14 @@ function trestle_shortcode_empty_paragraph_fix( $content ) {
']
' => ']'
);
- $content = strtr($content, $array);
+ $content = strtr( $content, $array );
return $content;
}
add_shortcode( 'col', 'trestle_column' );
/**
- * Columns
+ * Columns.
*
* Example:
* [col class="one-half first no-list-margin"] Contents [/col]
@@ -58,7 +58,7 @@ function trestle_column( $atts, $content = null ) {
add_shortcode( 'button', 'trestle_button' );
/**
- * Button
+ * Button.
*
* Example: [button href="url" title="title" target="target" class="class"]Text[/button]
*
@@ -78,7 +78,7 @@ function trestle_button( $atts, $content = null ) {
add_shortcode( 'date', 'trestle_date' );
/**
- * Date
+ * Date.
*
* Example: [date format="M d, Y"]
*
@@ -100,7 +100,7 @@ function trestle_date( $atts ) {
add_shortcode( 'blockquote', 'trestle_blockquote_shortcode' );
/**
- * Blockquote
+ * Blockquote.
*
* Example: [blockquote citation=""]Content[/blockquote]
*
diff --git a/includes/widget-areas/widget-areas.php b/includes/widget-areas/widget-areas.php
index e8602a4..0e96d19 100644
--- a/includes/widget-areas/widget-areas.php
+++ b/includes/widget-areas/widget-areas.php
@@ -1,16 +1,16 @@