WordPress 4.7.1
[autoinstalls/wordpress.git] / wp-content / themes / twentyseventeen / functions.php
index 30fdfccb94bc31436ec619379dba54d7939017a4..7d341007875316abce181bb01d3eb470e820b81d 100644 (file)
@@ -55,6 +55,9 @@ function twentyseventeen_setup() {
 
        add_image_size( 'twentyseventeen-thumbnail-avatar', 100, 100, true );
 
+       // Set the default content width.
+       $GLOBALS['content_width'] = 525;
+
        // This theme uses wp_nav_menu() in two locations.
        register_nav_menus( array(
                'top'    => __( 'Top Menu', 'twentyseventeen' ),
@@ -103,24 +106,29 @@ function twentyseventeen_setup() {
         */
        add_editor_style( array( 'assets/css/editor-style.css', twentyseventeen_fonts_url() ) );
 
-       add_theme_support( 'starter-content', array(
+       // Define and register starter content to showcase the theme on new sites.
+       $starter_content = array(
                'widgets' => array(
+                       // Place three core-defined widgets in the sidebar area.
                        'sidebar-1' => array(
                                'text_business_info',
                                'search',
                                'text_about',
                        ),
 
+                       // Add the core-defined business info widget to the footer 1 area.
                        'sidebar-2' => array(
                                'text_business_info',
                        ),
 
+                       // Put two core-defined widgets in the footer 2 area.
                        'sidebar-3' => array(
                                'text_about',
                                'search',
                        ),
                ),
 
+               // Specify the core-defined pages to create and add custom thumbnails to some of them.
                'posts' => array(
                        'home',
                        'about' => array(
@@ -137,10 +145,11 @@ function twentyseventeen_setup() {
                        ),
                ),
 
+               // Create the custom image attachments used as post thumbnails for pages.
                'attachments' => array(
                        'image-espresso' => array(
                                'post_title' => _x( 'Espresso', 'Theme starter content', 'twentyseventeen' ),
-                               'file' => 'assets/images/espresso.jpg',
+                               'file' => 'assets/images/espresso.jpg', // URL relative to the template directory.
                        ),
                        'image-sandwich' => array(
                                'post_title' => _x( 'Sandwich', 'Theme starter content', 'twentyseventeen' ),
@@ -152,12 +161,14 @@ function twentyseventeen_setup() {
                        ),
                ),
 
+               // Default to a static front page and assign the front and posts pages.
                'options' => array(
                        'show_on_front' => 'page',
                        'page_on_front' => '{{home}}',
                        'page_for_posts' => '{{blog}}',
                ),
 
+               // Set the front page section theme mods to the IDs of the core-registered pages.
                'theme_mods' => array(
                        'panel_1' => '{{homepage-section}}',
                        'panel_2' => '{{about}}',
@@ -165,16 +176,20 @@ function twentyseventeen_setup() {
                        'panel_4' => '{{contact}}',
                ),
 
+               // Set up nav menus for each of the two areas registered in the theme.
                'nav_menus' => array(
+                       // Assign a menu to the "top" location.
                        'top' => array(
                                'name' => __( 'Top Menu', 'twentyseventeen' ),
                                'items' => array(
-                                       'page_home',
+                                       'link_home', // Note that the core "home" page is actually a link in case a static front page is not used.
                                        'page_about',
                                        'page_blog',
                                        'page_contact',
                                ),
                        ),
+
+                       // Assign a menu to the "social" location.
                        'social' => array(
                                'name' => __( 'Social Links Menu', 'twentyseventeen' ),
                                'items' => array(
@@ -186,7 +201,18 @@ function twentyseventeen_setup() {
                                ),
                        ),
                ),
-       ) );
+       );
+
+       /**
+        * Filters Twenty Seventeen array of starter content.
+        *
+        * @since Twenty Seventeen 1.1
+        *
+        * @param array $starter_content Array of starter content.
+        */
+       $starter_content = apply_filters( 'twentyseventeen_starter_content', $starter_content );
+
+       add_theme_support( 'starter-content', $starter_content );
 }
 add_action( 'after_setup_theme', 'twentyseventeen_setup' );
 
@@ -199,10 +225,23 @@ add_action( 'after_setup_theme', 'twentyseventeen_setup' );
  */
 function twentyseventeen_content_width() {
 
-       $content_width = 700;
+       $content_width = $GLOBALS['content_width'];
+
+       // Get layout.
+       $page_layout = get_theme_mod( 'page_layout' );
+
+       // Check if layout is one column.
+       if ( 'one-column' === $page_layout ) {
+               if ( twentyseventeen_is_frontpage() ) {
+                       $content_width = 644;
+               } elseif ( is_page() ) {
+                       $content_width = 740;
+               }
+       }
 
-       if ( twentyseventeen_is_frontpage() ) {
-               $content_width = 1120;
+       // Check if is single post and there is no sidebar.
+       if ( is_single() && ! is_active_sidebar( 'sidebar-1' ) ) {
+               $content_width = 740;
        }
 
        /**
@@ -214,7 +253,7 @@ function twentyseventeen_content_width() {
         */
        $GLOBALS['content_width'] = apply_filters( 'twentyseventeen_content_width', $content_width );
 }
-add_action( 'after_setup_theme', 'twentyseventeen_content_width', 0 );
+add_action( 'template_redirect', 'twentyseventeen_content_width', 0 );
 
 /**
  * Register custom fonts.