badget

Biggest Sale! Special Offer!

Get 30% discount on all of our single themes with this coupon code: #30%SALE

Hurry up! *Limited time offer*

Loading header-extension.php in Child Theme

Viewing 8 posts - 1 through 8 (of 8 total)
  • Author
    Posts
  • #27120
    ed1996
    Participant

    Hi,

    I am trying to modify the theme’s header-extensions.php file. I know that I should create a child theme to do so, and I have followed the instructions on the Theme Horse forum.

    In my child theme, the stylesheet.css file is working fine. I created a copy of header-extensions.php and located it in Interface-child/structure/inc/header-extensions.php. My child functions.php file only contains the following code:

    <?php
    
    function unhook_thematic_functions(){
    	remove_action('interface_init', 'interface_load_files', 15);
    }
    
    add_action('init', 	'unhook_thematic_functions');
    
    add_action( 'interface_init', 'interface_child_load_files', 15 );
     
    function interface_child_load_files() {
    	/** 
    	 * interface_add_files hook
    	 *
    	 * Adding other addtional files if needed.
    	 */
    	do_action( 'interface_add_files' );
    
    	/** Load functions */
    	require_once( INTERFACE_FUNCTIONS_DIR . '/i18n.php' );
    	require_once( INTERFACE_FUNCTIONS_DIR . '/custom-header.php' );
    	require_once( INTERFACE_FUNCTIONS_DIR . '/functions.php' );
    	require_once( INTERFACE_FUNCTIONS_DIR . '/custom-style.php' );
    	require_once( INTERFACE_ADMIN_DIR . '/interface-themedefaults-value.php' );
    	require_once( INTERFACE_ADMIN_DIR . '/theme-option.php' );
    	require_once( INTERFACE_ADMIN_DIR . '/interface-metaboxes.php' );
    	
    
    	/** Load Shortcodes */
    	require_once( INTERFACE_SHORTCODES_DIR . '/interface-footer_info.php' );
    
    	/** Load Structure */
    	require_once( INTERFACE_STRUCTURE_DIR . '/header-extensions.php' );
    	require_once( INTERFACE_STRUCTURE_DIR . '/searchform-extensions.php' );
    	require_once( INTERFACE_STRUCTURE_DIR . '/sidebar-extensions.php' );
    	require_once( INTERFACE_STRUCTURE_DIR . '/footer-extensions.php' );
    	require_once( INTERFACE_STRUCTURE_DIR . '/content-extensions.php' );
    
    	/** Load Widgets and Widgetized Area */
    	require_once( INTERFACE_WIDGETS_DIR . '/interface_widgets.php' );
    }
    
    ?>

    However, modifications to the header-extensions.php files in the child theme directory do not apply to my website. My guess is that I need to change the address in the require_once( INTERFACE_STRUCTURE_DIR . '/header-extensions.php' ); line.

    Any help is appreciated, thank you very much.

    #27615
    Mark
    Participant

    Could support team on this forum answer this question, please? I’m wondering the same, how does one make changes in header-extensions.php in a child theme?

    #27641

    Hi all,

    Creating the same structure in the child theme will not over ride the parent theme. First of all you need to unhook the function and then customize the code. We will post a simple example how to unhook to functions:-
    Create a two files styles.css and functions.php

    Under style.css add this following code.

    /*
    Theme Name: interface Child Theme
    Author: Self-Help WordPress User
    Template: interface
    */
    
    @import url("../interface/style.css"); 

    Under functions.php file

    unhook functions

    // Unhook default Thematic functions
    function unhook_thematic_functions() {
        // Don't forget the position number if the original function has one
    
    remove_action( ‘interface_404_content', ‘interface_display_404_page_content', 10 );
    
    }
    add_action('init','unhook_thematic_functions'); // removes the header content by using hook interface_header
    
    add_action( ‘interface_404_content', ‘interface_child_display_404_page_content', 10 );
    /**
     * function to show the footer info, copyright information
     */
     
     
    function interface_child_display_404_page_content() {      ?>   
    <div id="content">
    		<header class="entry-header">
    			<h1 class="entry-title"><?php _e( 'Error 404-Page NOT Found', ‘interface’ ); ?></h1>
    		</header>
    		<div class="entry-content clearfix" >
    			<p>Thank you</p> 
    		</div><!-- .entry-content -->
    	</div><!-- #content -->
      <?php 
    }

    If you are still unable to fix it then you need to hire a developer to fix it.

    Thank you!

    #27660
    Mark
    Participant

    Thank you for answering.

    Is this how to get header-extensions.php in a child theme to work or is example made on something else? It doesn’t seem to work for my problem. I have created child style sheet months ago and it’s working fine.

    #27692
    ed1996
    Participant

    Hi Mark,

    I’ve managed to get my child header-extensions.php to work. I’m an extremely novice programmer, so there probably is a better solution out there. However, I’ll post the code that I’m using and provide an explanation.

    <?php
    
    function unhook_thematic_functions(){
    	remove_action('interface_init', 'interface_constants', 10);
    }
    
    add_action('init', 'unhook_thematic_functions');
    
    add_action( 'interface_init', 'interface_child_constants', 10 );
     
    function interface_child_constants() {
    	
    	/** Define Directory Location Constants */
    	define( 'INTERFACE_PARENT_DIR', get_template_directory() );
    	define( 'INTERFACE_CHILD_DIR', get_stylesheet_directory() );
    	define( 'INTERFACE_IMAGES_DIR', INTERFACE_PARENT_DIR . '/images' );
    	define( 'INTERFACE_INC_DIR', INTERFACE_CHILD_DIR. '/inc' );
    	define( 'INTERFACE_PARENT_CSS_DIR', INTERFACE_PARENT_DIR. '/css' );
    	define( 'INTERFACE_ADMIN_DIR', INTERFACE_INC_DIR . '/admin' );
    	define( 'INTERFACE_ADMIN_IMAGES_DIR', INTERFACE_ADMIN_DIR . '/images' );
    	define( 'INTERFACE_ADMIN_JS_DIR', INTERFACE_ADMIN_DIR . '/js' );
    	define( 'INTERFACE_ADMIN_CSS_DIR', INTERFACE_ADMIN_DIR . '/css' );
    	define( 'INTERFACE_JS_DIR', INTERFACE_PARENT_DIR . '/js' );
    	define( 'INTERFACE_CSS_DIR', INTERFACE_PARENT_DIR . '/css' );	
    	define( 'INTERFACE_FUNCTIONS_DIR', INTERFACE_INC_DIR . '/functions' );
    	define( 'INTERFACE_SHORTCODES_DIR', INTERFACE_INC_DIR . '/footer_info' );
    	define( 'INTERFACE_STRUCTURE_DIR', INTERFACE_INC_DIR . '/structure' );
    	if ( ! defined( 'INTERFACE_LANGUAGES_DIR' ) ) /** So we can define with a child theme */
    		define( 'INTERFACE_LANGUAGES_DIR', INTERFACE_PARENT_DIR . '/languages' );
    	define( 'INTERFACE_WIDGETS_DIR', INTERFACE_INC_DIR . '/widgets' );
    
    	/** Define URL Location Constants */
    	define( 'INTERFACE_PARENT_URL', get_template_directory_uri() );
    	define( 'INTERFACE_CHILD_URL', get_stylesheet_directory_uri() );
    	define( 'INTERFACE_IMAGES_URL', INTERFACE_PARENT_URL . '/images' );
    	define( 'INTERFACE_INC_URL', INTERFACE_PARENT_URL . '/inc' );
    	define( 'INTERFACE_ADMIN_URL', INTERFACE_INC_URL . '/admin' );
    	define( 'INTERFACE_ADMIN_IMAGES_URL', INTERFACE_ADMIN_URL . '/images' );
    	define( 'INTERFACE_ADMIN_JS_URL', INTERFACE_ADMIN_URL . '/js' );
    	define( 'INTERFACE_ADMIN_CSS_URL', INTERFACE_ADMIN_URL . '/css' );
    	define( 'INTERFACE_JS_URL', INTERFACE_PARENT_URL . '/js' );
    	define( 'INTERFACE_CSS_URL', INTERFACE_PARENT_URL . '/css' );
    	define( 'INTERFACE_FUNCTIONS_URL', INTERFACE_INC_URL . '/functions' );
    	define( 'INTERFACE_SHORTCODES_URL', INTERFACE_INC_URL . '/footer_info' );
    	define( 'INTERFACE_STRUCTURE_URL', INTERFACE_INC_URL . '/structure' );
    	if ( ! defined( 'INTERFACE_LANGUAGES_URL' ) ) /** So we can predefine to child theme */
    		define( 'INTERFACE_LANGUAGES_URL', INTERFACE_PARENT_URL . '/languages' );
    	define( 'INTERFACE_WIDGETS_URL', INTERFACE_INC_URL . '/widgets' );
    
    }
    ?>

    My previous child functions.php unhooked the wrong function. In this new functions.php I’ve changed the location where the header-extensions.php filed is sourced to my child-theme directory from the parent directory.

    As well as using this code, I had to create the inc directory in my child theme. I also copied the folders in the parent inc directory (admin, footer_info, functions, structures, widgets) to the child inc directory. Lastly I just replaced the original header-extensions.php with the custom one.

    Let me know if you have any questions,
    Edward

    #27706

    Hi Edward,

    Is your child theme working correctly? yes you are doing correct to unhook but to modify only header-extension.php i don’t think that you need to do this all.
    Just to unhook header content details E.g:-

    // Unhook default Thematic functions
    function unhook_thematic_functions() {
        // Don't forget the position number if the original function has one
    
    add_action( 'interface_header', 'interface_headercontent_details', 10 );
    }
    
    add_action('init','unhook_thematic_functions'); // removes the header content by using hook interface_header
    
    add_action( 'interface_headercontent_details', 'interface_child_headercontent_details', 10 );
    funtion interface_child_headercontent_details(){
    // your stuff
    }
    

    Thank you!

    #47563
    Charles Koehler
    Participant

    I’m trying to do the same thing. My child-theme is set up and my style.css is working just fine but below is my functions.php file. Where and what code do I add to get my child-themes header-extensions.php file to work?

    <?php

    if ( ! function_exists( ‘attitude_header_title’ ) ) :
    /**
    * Show the title in header
    *
    * @since Attitude Pro 1.0
    */
    function attitude_header_title() {
    if( is_archive() ) {
    $attitude_header_title = single_cat_title( ”, FALSE );
    }
    elseif( is_404() ) {
    $attitude_header_title = __( ‘Page NOT Found’, ‘attitude’ );
    }
    elseif( is_search() ) {
    $attitude_header_title = __( ‘Search Results’, ‘attitude’ );
    }
    elseif( is_page_template() ) {
    $attitude_header_title = get_the_title();
    }
    else {
    $attitude_header_title = get_the_title();
    }

    return $attitude_header_title;

    }
    endif;
    ?>

    #47578

    Hi Charles,

    Doing this doesn’t work for you. Create you own topic. Don’t add your questions on others topic. First you need to unhook and then only hook the functions. Making same structure will not overwrite the parent theme. The above is for the interface and i think you have asked a questions for attitude pro.

    Just try using below code

    // Unhook default Thematic functions
    function unhook_thematic_functions() {
        // Don't forget the position number if the original function has one
    
    remove_action( 'attitude_header', 'attitude_headercontent_details', 10 );
    }
    
    add_action('init','unhook_thematic_functions'); // removes the header content by using hook attitude_header
    
    add_action( 'attitude_headercontent_details', 'attitude_child_headercontent_details', 10 );
    funtion attitude_child_headercontent_details(){
    // your stuff
    }

    If still it doesn’t work then please create your own topic. Because this topic is a years old ago. Also make clear what exactly you want to do on the theme.

    Thank You

Viewing 8 posts - 1 through 8 (of 8 total)
  • You must be logged in to reply to this topic.