Support » Theme: Twenty Seventeen » Customising Using Child Themes & Filters

  • Hello,

    I am trying to get my head around the new filters in twenty seventeen. At https://make.wordpress.org/core/2016/11/29/theming-with-twenty-seventeen/ it has an example of custom header settings and so I tried a test by placing the following code into the child theme functions.php to display the default twenty seventeen header on the home page even when a custom header has been defined in the customizer:

    function childtheme_custom_header_args( $args )
    {
    	if ( twentyseventeen_is_frontpage() ) //
    	{//
    		$args['default-image'] = get_parent_theme_file_uri( '/assets/images/header.jpg' );
    	}//
    	return $args;
    }
    add_filter( 'twentyseventeen_custom_header_args', 'childtheme_custom_header_args' );

    However, there as no change in the header on the home page. I also commented out the lines ending in // to see if the default twenty seventeen header appeared on all the pages but there was no change.

    Can someone clarify how the new filters work with twenty seventeen child themes?

    • This topic was modified 2 years, 11 months ago by Bharat Karavadra. Reason: added WP version
Viewing 3 replies - 1 through 3 (of 3 total)
  • Hi there @bharatk,

    Great question!

    This is probably best accomplished in a plugin. Like this one, for example.

    Your code won’t work because the'default-image' value is different than the custom header image value displayed on the front end. WordPress looks for an uploaded image first, and if not, falls back to the default image. It only knows of one custom header image value at a time. That’s why it’s best that a plugin tackles this kind of thing, because each page could need it’s own custom header value.

    That said, if you’re looking for just this quick change, you can drop this into the new Additional CSS panel in the Customizer:

    
    /* Hide the inline custom header image on the front page. */
    .twentyseventeen-front-page .wp-custom-header img {
    	display: none;
    }
    
    /* Place a new one, via background. */
    .wp-custom-header {
    	background-image: url(/wp-content/themes/twentyseventeen/assets/images/header.jpg);
    	background-repeat: no-repeat;
    	height: 100%;
    	background-size: cover;
    }
    

    That should work, no child theme needed. 🙂

    Hello @davidakennedy,

    Thank you for the reply, however, the plugin route seems to only allow customisation of the image and my first post was leading to the requirement of more header customisations and so in brief…

    1) How do we change the following header variables for the front page?

    ‘default-image’ => as first post,
    ‘width’ => 2000, or other
    ‘height’ => 1200, or other
    ‘flex-height’ => true, or not
    ‘video’ => true, or not

    2) How do we change the above header variables for the individual post and pages, and also groups of posts such as all posts under one category?

    Regards,

    Bharat

    @bharatk

    1) How do we change the following header variables for the front page?

    Those values can be modified in a child theme with a filter. Like this, as an example. Drop that into a child theme’s functions.php file:

    function childtheme_custom_header_setup() {
    	add_theme_support( 'custom-header', apply_filters( 'childtheme_header_args', array(
    		'width'                  => value,
    		'height'                 => value,
    	) ) );
    }
    add_action( 'after_setup_theme', 'childtheme_custom_header_setup' );

    2) How do we change the above header variables for the individual post and pages, and also groups of posts such as all posts under one category?

    This is a bit custom. I can’t write all that code for you, but it should be possible with the proper conditional logic, like is_page. You can use the above function as a starting point.

    Happy theming!

Viewing 3 replies - 1 through 3 (of 3 total)
  • The topic ‘Customising Using Child Themes & Filters’ is closed to new replies.