tonik / theme

Tonik is a WordPress Starter Theme which aims to modernize, organize and enhance some aspects of WordPress theme development.
http://labs.tonik.pl/theme/
MIT License
1.33k stars 140 forks source link

Are there any concerns of future-proofing/compatibility? #30

Open msacchetti opened 7 years ago

msacchetti commented 7 years ago

I am using this theme to develop a large web-app and love it so far. As i get further and further along I realize that there are many things going on in the background that change how WP functions (theme init, the loading of the template files etc).

Is there any concern that future WP updates/functionality might break if the project stops being maintained?

Thanks

jedrzejchalubek commented 7 years ago

Theme structure doesn't stand against any of WordPress principles. It does not make any actions or filters to bend WordPress in any manner.

The whole system does not have any of external dependencies (which we don't control). It is just tonik/theme + tonik/gin. It is a PHP code which only adds some custom actions and filters. They are basically decoupled from WordPress enterally.

The only components which are a little bit tightly coupled with WordPress is an Autoload and Template component.

Autoload uses localize_template to require listed files, so it can supports a child theme overwriting.

In Template component we have to recreate the logic behind get_template_part so we could achieve the "passing data" functionality. It uses localize_template and calls required actions as same as the original get_template_part function.

It should not be any problem until WordPress does not decide to make some drastic changes in these two functions (which is really unlikely, because of versioning policy of WordPress). Even so, most of the plugins out there will have the same problem.

We have a full suite of unit tests for tonik/gin package, so we in control for these custom functionalities. I encourage you to look at tonik/gin source code. Really, is not much happening there.

Ask if you have any additional question :)