February 22, 2014 at 7:34 pm #91974
I am new to website building, and am learning as i need in order to build two sites for my family.
I work in IT, but not with website technologies, so while some concepts are fairly straightforward to understand, I’m still starting at the beginning.
I like to get some advice on how best to customize, or more correctly, build content into a Genesis Child theme.
The key objective is to keep the custom build content neat and in one place while also avoiding future child theme upgrade issues.
I have decided to use the Genesis Framework with Dynamik Website builder.
All was going really well until i:
a. found several bugs in Dynamik, but also find out it does a few really strange things. (This meant i needed to either work around the issues with Dynamik, or throw it away and use another child theme)
b. begun to understand the WordPress/ Genesis best practice, and how the concepts fit together
I can see 3 clear options on how to organize the custom build, but none are ideal. These are:
1) Create a grandchild theme plugin
2) Add a custom folder structure within the child theme
3) Add a custom fonder structure within wp-contnet (ie. uploads folder)
There is obviously a forth, but this is not what i want to do:
4) Use a clean theme to custom build a child theme, or decide to change the prebuilt child theme such that it never updates.
I've researched each one in detail, as well as prototyped each, but can't find the perfect solution.
I'd really like to hear back from anyone with ideas or suggestions.
I would really appreciate help from people who have traveled this path already.
My conclusions on the above options are:
1) Grandchild plugin. (Excellent tutorial: http://docs.appthemes.com/tutorials/creating-grandchild-themes/).
- On one hand, this is almost the perfect solution.
- Thought it is not a WordPress best practice, it does have many advantages. It give you control over the plugin fucntions.php file which means the child theme funcitons.php file is never modified.
- Using a plugin means it may be slightly easier to implement changes (rather than ftp), but this is irrelevant to my needs.
- It is quite simple to replace get_stylesheet_directory() with plugin_dir_path(), so code is easy to convert.
- The HUGE downside of a grandchild plugin is that the plugin (and the files) can be deleted tooooooo easily, and as a result, all the design work would be deleted. While being careful would avoided this, the risks would require a much more stringent backup process.
2) Within the child theme template root directory (ie /wp-content/themes/my chosen child theme/), create a folder called something like "my-custom-include", and add all the necessary sub folders, such as CSS, JS, Widgets, Templates, etc.
- This would have a my-init.php file to manage all references like include-once, etc. The my-init.php takes over the role of the child themes functions.php file for the customizations.
- This approach is really neat and easy to set up, including simple redirection to choose the Custom Post Type templates.
- It keeps all the customizations bundled within the child theme structure.
- It safeguards all customizations from any future child theme updates.
- The one downside is the need to add a single line of code to the child theme functions.php file to reference the my-init.php file. While not a big deal to fix, it could cause some annoyance in the future if the person maintaining the site does not understand the structure.
- The possible workaround i can see to this is to create a very very simple plugin that must be installed. It would simply references to my-init.php file. Because the plugin would never change, there would be zero versioning requirements.
3) Use the wp-content/uploads/my-custom-content/ folder to hold the customizations.
- This approach is what Dynamik uses for part of the user customizations generated by its tools. Anyone who has the Genesis Extender, or the Dynamik Website Builder theme will know this already.
- While this is another options, adding customizations here starts to make a mess of the folder structures and does not seem like the appropriate approach to doing things.
- I've read about possible problems with security in the uploads folder, but my knowledge is not sufficient to understand if they are real problems.
4) Create a custom child theme.
- There are countless blogs from people who have taken the journey this post is about, and each discuss using different methods before many ending up starting with a clean child theme.
- The most well-known would be Bill Erickson (http://www.billerickson.net/genesis-base-child-theme/) and Bones for Genesis 2.0 (http://bonesforgenesis.com/).
- I spent a few days putting together my own version of these before I realized that this was not my objective.
I'm new to websites and simply want a great starting point which allows me to make a few customizations away from the limitations and bugs in Dynamik Website Builder (or any other Genesis Child Theme), but where there is a degree of future proofing to the site, and where upgrades won't break the site.
I'm pretty sure there are many other Genesis Users out there who are facing this same dilemma.
WordPress has built a solution for this problem, which is the child theme concept, but because the Genesis Framework takes away the Parent Theme, all Genesis users are stuck with not being able to utilize a prebuilt themes as a Parent theme.
If WordPress formalized a Grandchild theme concept, Genesis Framework users would not face this issue, but after several years of this debate it does not look like WordPress will do this.
I hope someone feels like sharing their ideas and experiences.
Kind Regards.February 22, 2014 at 8:54 pm #91984
You could use either a StudioPress child theme or the Genesis Sample theme and modify/customize either of these themes.
Then use all these snippets to customize
You would only generally use the functions and style.css files and maybe one or two template files all in a child theme.
Brad Dalton has written 1961 Genesis tutorials & 4000+ Code Snippets .
You must be logged in to reply to this topic.