I'm looking for an efficient way to group a series of separate but related functions for a child theme I'm designing using theThematic Theme Framework. Thematic does a great job of providing plenty of action hooks and filters for child theme development, which I'm trying properly utilize. I'm making a lot of changes to the home page, so I have created a series of functions which alter specific content areas but I only want to execute these functions on my site's index page. Previously my functions.php file has looked a lot like this:
<?php
function home_function_a() {
if ( is_front_page() ) {
//Something Near the top of the Home Page
}
}
add_action('thematic_belowheader', 'home_function_a');
function home_function_b() {
if ( is_front_page() ) {
//Something in in the sidebar
}
}
add_filter('thematic_sidebar', 'home_function_b');
function home_function_c() {
if ( is_front_page() ) {
//Something near the bottom of the page
}
}
add_action('thematic_abovecomments', 'home_function_c');
// etc, etc, etc
?>
The above technique works but strikes me as somewhat inefficient. I was thinking it might be nice to use a nested function approach as shown below:
<?php
function everything_on_the_home_page() {
if ( is_front_page() ) {
function home_function_a() {
//Something near the top of the Home Page
}
add_action('thematic_belowheader', 'home_function_a');
function home_function_b() {
//Something in the sidebar of the Home Page
}
add_filter('thematic_sidebar', 'home_function_b');
function home_function_c() {
//Something near the bottom of the Home Page
}
add_action('thematic_abovecomments', 'home_function_c');
// etc, etc, etc
}
}
add_action('thematic_aboveheader', 'everything_on_the_home_page');
?>
This code looks a little nicer and seems to work properly, but I wanted to double check to make sure this technique is recommended and Kosher. I tried a couple google searches for articles/forum posts about this approach, but I couldn't find anything helpful. Please let me know if you think my nested function tree is a good way to solve my problems or if you have any other suggestions.
Thanks for your time! Best, Jonathan