Support » Theme: Twenty Nineteen » Extending TwentyNineteen_SVG_Icons class in Child Theme

  • On a dev server … no link.

    I thought I found the missing link (for me at least) to extending a class of parent theme, in the child theme, when I read this post: https://wordpress.org/support/topic/how-to-extend-a-parent-theme-class-from-child-theme-in/

    But when I tried implementing this, I did the following, and it didn’t “take” …

    1. Copied the file from the parent theme, into a includes folder in the child theme
    2. Modified it to include additional svg icons associated to other link urls
    3. Rewrote the first line to: class MyClass extends TwentyNineteen_SVG_Icons {
    4. Added the following to functions.php:<br />
      function social_svg() {
        require_once get_theme_file_path( '/includes/class-twentynineteen-svg-icons.php' );
      }
      add_action( 'after_setup_theme', 'social_svg' );

    But the additional icons are not depicted in the correct location as they are on the live server (where I currently overwrite the file directly in the parent theme and continuously replace the snippet after updates)

    I thought the idea that it needed to fire after the parent theme was the ticket … but I could also be missing something. Please, lend your thoughts.

    Much thanks
    CT

    • This topic was modified 1 year, 5 months ago by hopetommola.
    • This topic was modified 1 year, 5 months ago by t-p.
Viewing 3 replies - 1 through 3 (of 3 total)
  • The code you gave just loads a PHP file. It doesn’t really tell what takes place in the PHP file class-twentynineteen-svg-icons.php. You should also include a link to your site that will allow people to see what you are talking about. Even if it executing the program correctly it doesn’t really explain what taking place. This question can’t be answered because the class-twentynineteen-svg-icons.php file is a black box to everyone.

    Thread Starter hopetommola

    (@hopetommola)

    The original file from the theme repo:
    https://github.com/WordPress/twentynineteen/blob/master/classes/class-twentynineteen-svg-icons.php

    The file referenced above:
    https://gist.github.com/craigtommola/ccfcfa08e6133f9de68c0890a16c98a3

    Much like one would copy a file from a parent to a child theme, the copy was made, the additions made in the copy, extending the class, then included after_setup_theme

    MaxD

    (@max-dayala)

    Hi, I think I can see what is wrong.

    In class TwentyNineteen_SVG_Icons everything is defined to be static.

    When you create your extended class More_Social you create another set of identically named static properties and functions. Hence, unless you have also changed your templates to use the More_Social class nothing will happen.

    You probably don’t want (or need) to change the templates if you have only changed the array data and not the functions. Instead, what you should do is add your new data to the existing static arrays. Do this in your function social_svg. You won’t need the More_Social class at all if you do this.

    i.e. Something like this would add a single icon:

    TwentyNineteen_SVG_Icons::$social_icons['alexa'] = '...svg string...'

Viewing 3 replies - 1 through 3 (of 3 total)
  • The topic ‘Extending TwentyNineteen_SVG_Icons class in Child Theme’ is closed to new replies.