• Resolved UmbrellaWeb

    (@umbrellaweb)


    I am having issues with overiding the footer template with one placed in my child theme folder. It doesnt work.

    So I have placed this file: class-astra-builder-footer.php
    From this location: themes/astra/inc/builder/markup
    To this location in the child them folder: themes/child-theme/inc/builder/markup

    it doesnt overide the parent. thats the whole point of child themes.

    Is this a bug? why doesn it now work?

    Can you please advise if I am missing anything for this to work as expected…

Viewing 13 replies - 1 through 13 (of 13 total)
  • Hi @umbrellaweb,

    What is the thing you actually would like to achieve?

    Kind regards,
    Herman ??

    Thread Starter UmbrellaWeb

    (@umbrellaweb)

    @bsfherman thanks for the reply.

    Trying to get custom text into the footer (i.e. website was developed by…) WITHOUT having to reply on the customiser setting. Basically dont want a client to remove the text in any way.

    Tried to duplicate the: class-astra-builder-footer.php and add to the child theme using the same folder strucure but it doesnt work…

    hope that makes sense and that you can help to achieve?

    Hi @umbrellaweb,

    You can use Hook for that. Adding something like below to the functions.php file of the child theme

    add_action('astra_footer_after' , 'add_text_after_footer');
    function add_text_after_footer(){
    	echo "<span class='aligncenter'>developed by...</span>";
    }

    will generate something like seen in this screenshot.

    To find a proper Hook, you can refer to this page.

    I hope it will help.

    Kind regards,
    Herman ??

    Thread Starter UmbrellaWeb

    (@umbrellaweb)

    @bsfherman We are aware of the hooks that can be used BUT the positon we require for most projects is within a specific footer area. Otherwise the styling just looks off and very poor.

    hence why we tried to use the child theme template instead.

    You havent answered that question. Why is it broken?
    Does child theme overides not work with astra theme????

    Hi @umbrellaweb, sorry for the delay.

    Is it OK if you share your code so I can try it on my end?

    Looking forward to hearing from you.

    Kind regards,
    Herman ??

    Thread Starter UmbrellaWeb

    (@umbrellaweb)

    Hey Herman,

    > sorry for the delay.
    Yes we have been waiting a bit of time ??

    Sure here is the code:

    <?php
    /**
     * Astra Builder Loader.
     *
     * @package astra-builder
     */
    
    // No direct access, please.
    if ( ! defined( 'ABSPATH' ) ) {
    	exit;
    }
    
    if ( ! class_exists( 'Astra_Builder_Footer' ) ) {
    
    	/**
    	 * Class Astra_Builder_Footer.
    	 */
    	final class Astra_Builder_Footer {
    
    		/**
    		 * Member Variable
    		 *
    		 * @var instance
    		 */
    		private static $instance = null;
    
    		/**
    		 * Dynamic Methods.
    		 *
    		 * @var dynamic methods
    		 */
    		private static $methods = array();
    
    		/**
    		 *  Initiator
    		 */
    		public static function get_instance() {
    
    			if ( is_null( self::$instance ) ) {
    				self::$instance = new self();
    			}
    
    			return self::$instance;
    		}
    
    		/**
    		 * Constructor
    		 */
    		public function __construct() {
    
    			if ( true === Astra_Builder_Helper::$is_header_footer_builder_active ) {
    
    				$this->remove_existing_actions();
    
    				// Footer Builder.
    				add_action( 'astra_footer', array( $this, 'footer_markup' ), 10 );
    
    				add_action( 'astra_above_footer', array( $this, 'above_footer' ), 10 );
    				add_action( 'astra_primary_footer', array( $this, 'primary_footer' ), 10 );
    				add_action( 'astra_below_footer', array( $this, 'below_footer' ), 10 );
    
    				add_action( 'astra_render_footer_column', array( $this, 'render_column' ), 10, 2 );
    
    				// Core Components.
    				add_action( 'astra_footer_copyright', array( $this, 'footer_copyright' ), 10 );
    
    				for ( $index = 1; $index <= Astra_Builder_Helper::$component_limit; $index++ ) {
    
    					// Buttons.
    					add_action( 'astra_footer_button_' . $index, array( $this, 'button_' . $index ) );
    					self::$methods[] = 'button_' . $index;
    
    					// Htmls.
    					add_action( 'astra_footer_html_' . $index, array( $this, 'footer_html_' . $index ) );
    					self::$methods[] = 'footer_html_' . $index;
    
    					// Social Icons.
    					add_action( 'astra_footer_social_' . $index, array( $this, 'footer_social_' . $index ) );
    					self::$methods[] = 'footer_social_' . $index;
    
    				}
    
    				// Navigation menu.
    				add_action( 'astra_footer_menu', array( $this, 'footer_menu' ) );
    			}
    		}
    
    		/**
    		 * Callback when method not exists.
    		 *
    		 * @param  string $func function name.
    		 * @param array  $params function parameters.
    		 */
    		public function __call( $func, $params ) {
    
    			if ( in_array( $func, self::$methods, true ) ) {
    
    				if ( 0 === strpos( $func, 'footer_html_' ) ) {
    					Astra_Builder_UI_Controller::render_html_markup( str_replace( '_', '-', $func ) );
    				} elseif ( 0 === strpos( $func, 'button_' ) ) {
    					$index = (int) substr( $func, strrpos( $func, '_' ) + 1 );
    
    					if ( $index ) {
    						Astra_Builder_UI_Controller::render_button( $index, 'footer' );
    					}
    				} elseif ( 0 === strpos( $func, 'footer_social_' ) ) {
    					$index = (int) substr( $func, strrpos( $func, '_' ) + 1 );
    
    					if ( $index ) {
    						Astra_Builder_UI_Controller::render_social_icon( $index, 'footer' );
    					}
    				}
    			}
    		}
    
    		/**
    		 * Remove existing Footer to load Footer Builder.
    		 *
    		 * @since 3.0.0
    		 * @return void
    		 */
    		public function remove_existing_actions() {
    			remove_action( 'astra_footer_content_top', 'astra_footer_content_top' );
    			remove_action( 'astra_footer_content', 'astra_advanced_footer_markup', 1 );
    			remove_action( 'astra_footer_content', 'astra_footer_small_footer_template', 5 );
    			remove_action( 'astra_footer_content_bottom', 'astra_footer_content_bottom' );
    			remove_action( 'astra_footer', 'astra_footer_markup' );
    		}
    
    		/**
    		 * Astra Footer Markup.
    		 */
    		public function footer_markup() {
    
    			$display_footer = get_post_meta( get_the_ID(), 'footer-sml-layout', true );
    
    			$display_footer = apply_filters( 'astra_footer_bar_display', $display_footer );
    
    			if ( 'disabled' !== $display_footer ) {
    
    				get_template_part( 'template-parts/footer/builder/desktop-builder-layout' );
    			}
    		}
    
    		/**
    		 *  Call above footer UI.
    		 */
    		public function above_footer() {
    
    			if ( astra_wp_version_compare( '5.4.99', '>=' ) ) {
    
    				get_template_part(
    					'template-parts/footer/builder/footer',
    					'row',
    					array(
    						'row' => 'above',
    					)
    				);
    			} else {
    
    				set_query_var( 'row', 'above' );
    				get_template_part( 'template-parts/footer/builder/footer', 'row' );
    			}
    
    		}
    
    		/**
    		 *  Call primary footer UI.
    		 */
    		public function primary_footer() {
    
    			if ( astra_wp_version_compare( '5.4.99', '>=' ) ) {
    
    				get_template_part(
    					'template-parts/footer/builder/footer',
    					'row',
    					array(
    						'row' => 'primary',
    					)
    				);
    			} else {
    
    				set_query_var( 'row', 'primary' );
    				get_template_part( 'template-parts/footer/builder/footer', 'row' );
    			}
    
    		}
    
    		/**
    		 *  Call below footer UI.
    		 */
    		public function below_footer() {
    
    			if ( astra_wp_version_compare( '5.4.99', '>=' ) ) {
    
    				get_template_part(
    					'template-parts/footer/builder/footer',
    					'row',
    					array(
    						'row' => 'below',
    					)
    				);
    			} else {
    
    				set_query_var( 'row', 'below' );
    				get_template_part( 'template-parts/footer/builder/footer', 'row' );
    			}
    
    		}
    
    		/**
    		 * Call component footer UI.
    		 *
    		 * @param string $row row.
    		 * @param string $column column.
    		 */
    		public function render_column( $row, $column ) {
    
    			Astra_Builder_Helper::render_builder_markup( $row, $column, 'desktop', 'footer' );
    		}
    
    		/**
    		 * Render Footer Copyright Markup!
    		 */
    		public function footer_copyright() {
    
    			$theme_author = astra_get_theme_author_details();
    
    			$content = astra_get_option( 'footer-copyright-editor' );
    			if ( $content || is_customize_preview() ) {
    				echo '<div class="ast-footer-copyright"><p class="vdinfo">Website made by <a href=" https://www.WEBSITEADDRESS.com/" rel="noopener" target="_blank">DEVELOPER NAME</a></p>';
    						$content = str_replace( '[copyright]', '&copy;', $content );
    						$content = str_replace( '[current_year]', gmdate( 'Y' ), $content );
    						$content = str_replace( '[site_title]', get_bloginfo( 'name' ), $content );
    						$content = str_replace( '[theme_author]', '<a href="' . esc_url( $theme_author['theme_author_url'] ) . '" rel="nofollow noopener" target="_blank">' . $theme_author['theme_name'] . '</a>', $content );
    						echo do_shortcode( wpautop( $content ) );
    				echo '</div>';
    			}
    
    		}
    
    		/**
    		 * Render HTML 1.
    		 */
    		public function footer_html_1() {
    			Astra_Builder_UI_Controller::render_html_markup( 'footer-html-1' );
    		}
    
    		/**
    		 * Render HTML 2.
    		 */
    		public function footer_html_2() {
    			Astra_Builder_UI_Controller::render_html_markup( 'footer-html-2' );
    		}
    
    		/**
    		 * Render HTML 3.
    		 */
    		public function footer_html_3() {
    			Astra_Builder_UI_Controller::render_html_markup( 'footer-html-3' );
    		}
    
    		/**
    		 * Render HTML 4.
    		 */
    		public function footer_html_4() {
    			Astra_Builder_UI_Controller::render_html_markup( 'footer-html-4' );
    		}
    
    		/**
    		 * Render Menu.
    		 */
    		public function footer_menu() {
    			Astra_Footer_Menu_Component::menu_markup();
    		}
    	}
    
    	/**
    	 *  Prepare if class 'Astra_Builder_Footer' exist.
    	 *  Kicking this off by calling 'get_instance()' method
    	 */
    	Astra_Builder_Footer::get_instance();
    }
    

    If you look at line 232 that is where my insert is. Simple nothing major BUT it keeps the positioning on the front end. I cannot seem to accomplish this using hooks (only examples you have are for header) and even after messing around the best I can get is before footer. No good.

    Should be able to override file via child theme? otherwise child theme is pointless AND no point doing change on parent theme as that will get over-ridden via an update ??

    Hope you wont forget and reply quickly this time…

    • This reply was modified 2 years, 4 months ago by UmbrellaWeb. Reason: formatting issue fixed

    Hi @umbrellaweb,

    Would you please submit a ticket through our Support Portal so we can have a closer look at this?

    When you submit a ticket, instead of re-explaining your query, you can just mention this thread and/or tag my name.

    Kind regards,
    Herman ??

    Thread Starter UmbrellaWeb

    (@umbrellaweb)

    @bsfherman so reached out to support… and SUPER got a fix after going back and forth. Stella just the fix we required. Much appreciated. Will leave a review too as we are happy ??

    Hi @umbrellaweb, sorry for the delay.

    Yea, I saw the thread in your ticket. So happy that we could help. And we appreciate a lot the great review you left ??

    Feel free to start a new thread if there is anything else related to Astra we can help you with.

    Kind regards,
    Herman ??

    Can you share the solution that worked for you? I’m trying to do the same with my child theme. Thanks!

    Thread Starter UmbrellaWeb

    (@umbrellaweb)

    @norimushi sure. this is what worked for us:

    add_action( 'wp', 'remove_footer_copyright_action' ); // We have removed default hook function
    function remove_footer_copyright_action() {
    	remove_action( 'astra_footer_copyright', array( Astra_Builder_Footer::get_instance(), 'footer_copyright' ), 10 );
    }
    
    add_action( 'astra_footer_copyright', 'add_content_before_after' ); //Added new function in the hook.
    
    function add_content_before_after() { 
    	
    	$theme_author = astra_get_theme_author_details();
    
    			$content = astra_get_option( 'footer-copyright-editor' );
    			if ( $content || is_customize_preview() ) {
    				echo '<div class="ast-footer-copyright">ADD YOUR CODE HERE<br>';
    						$content = str_replace( '[copyright]', '&copy;', $content );
    						$content = str_replace( '[current_year]', gmdate( 'Y' ), $content );
    						$content = str_replace( '[site_title]', get_bloginfo( 'name' ), $content );
    						$content = str_replace( '[theme_author]', '<a href=" ' . esc_url( $theme_author['theme_author_url'] ) . '" rel="nofollow noopener" target="_blank">' . $theme_author['theme_name'] . '</a>', $content );
    						echo do_shortcode( wpautop( $content ) );
    				echo '</div>';
     }}

    Dont forget to replace where it says ADD YOUR CODE HERE with whatever you require to be output on the frontend.

    Stick that into the codesnippets plgin (best way) and save/enable and you should be good to go!

    Added to function.php of my child theme and it worked perfectly. Thanks for a quick reply!

    I am interest in the codes. Can you show how your front end likes like after the change? Thanks for sharing.

Viewing 13 replies - 1 through 13 (of 13 total)
  • The topic ‘Child Theme Template Overides NOT Working’ is closed to new replies.