Use locate_template instead of TEMPLATEPATH to Include Files in a BuddyPress Child Theme

Today I ran into an interesting problem while developing a BuddyPress theme. I was attempting to include a custom sidebar using PHP’s “include” function. The WordPress codex page on “include tags” gives us this:

<?php include( TEMPLATEPATH . ‘/sidebar-index.php’ ); ?>

The problem is that the above code doesn’t always work when you are utilizing a child theme (I am building a child theme based on the default BuddyPress theme). Rather, you should use the “locate_template” hook:

<?php locate_template( array( ‘sidebar-index.php’ ), true ) ?>

What the “locate_template” hook does is searches the child theme’s template folder before searching the parent theme’s template folder.

Pretty nifty, eh?

Posted in ,

8 Comments

  1. alan on March 6, 2010 at 3:57 am

    thanks this works perfect…

    thanks for sharing.this is why I like wordpress ,community is awesome!



  2. Marco on March 8, 2010 at 7:28 am

    Hello, I’m facing some problem with this method, I tried to use a hook in child functions.php so I won’t touch files directly, but that didn’t work. Could you drop me a line via mail so I can show you what I’ve done and maybe show me where’s the error.



  3. Toby on March 8, 2010 at 1:40 pm

    Marco,

    Can you explain a little bit more?

    So far, I have only used the “locate_template” hook from a child theme’s page and post template files, so I can’t vouch for how it might work in the functions.php file.



  4. Marco on March 9, 2010 at 4:43 am

    Hello, here’s what I’ve done in functions.php (shouty is the site theme name):

    /*define constant*/
    define(‘SHOUTY_DIR’, STYLESHEETPATH);

    then:
    /*here we insert, after the regular sidebar, Shouty’s left sidebar*/
    add_action(‘bp_after_sidebar’, ‘shouty_include_sidebar_left’);
    function shouty_include_sidebar_left() {
    require(SHOUTY_DIR.’/sidebar_left.php’);
    }

    But this does not load the sidebar_left.php givin an error of file/folder not found in child theme dir, even though is actually there and I can’t figure why. I use this method with frameworks like Hybrid, Thematic and the new Genesis and it always works well.

    ps. I tried hardcoding but doesn’t work either.



    • Toby on March 15, 2010 at 11:08 pm

      Marco,
      Have you tried using include( TEMPLATEPATH . ‘/sidebar-index.php’ ); rather than define(‘SHOUTY_DIR’, STYLESHEETPATH); ?



  5. Marco on March 16, 2010 at 1:42 am

    Yes I did it at first.
    TEMPLATEPATH leads you into the parent theme, giving the error of file/dir not found. Quite the same error as STYLESHEETPATH, this time from the child theme’s dir.



  6. Toby on March 16, 2010 at 8:17 am

    Marco,
    Will the path work properly if you include your code in the template itself (i.e. index.php rather than in functions.php)?



  7. dreamdrivendesigns on October 12, 2010 at 7:40 pm

    Thanks for the tip on inlcude templatepath not working in BuddyPress, I encounter this problem myself. Was looking for a solution. Thanks



RSS From Toby’s Blog

  • WordPress Maintenance Checklist: Keep Your Site Running Smoothly
    Discover the essential tasks for effective WordPress maintenance and ensure your website runs smoothly and securely with our comprehensive guide.
  • Why We Don’t Automate Our WordPress Hosting Business
    There are some great platforms out there to automate your website hosting biz: But we don’t use any of them. Here’s why: Hosting companies only get worse over time. Over the years, I’ve hosted websites on a bunch of platforms: All of these hosting companies share one thing in common: Over time, they all got…
  • Fortify Your WordPress Site: Essential Security Steps
    Securing your WordPress site is a critical component of maintaining your online presence and safeguarding your data. Security is no longer a luxury, it has become a necessity in today’s digital world, where threats are lurking at every corner. This piece dives deep into WordPress security basics, giving you a comprehensive understanding of common vulnerabilities…

More posts from themightymo.com

gravity forms email spam blacklist

How to Block Mailinator and other spam from Gravity Forms

By The Mighty Mo! Design Co. | May 30, 2023

I’ve had a couple of scenarios where I’ve needed to block a specific domain from filling out Gravity Forms on my WordPress site. Today I needed to block spammy “mailinator.com” submissions from a contact form. The solution was simple: Install and configure the Gravity Forms Email Blacklist plugin. In a few minutes – all done!

How to merge multiple csv files via command line

How to merge multiple .csv files via command line

By The Mighty Mo! Design Co. | May 17, 2023

Today I downloaded 29 csv files with tax information. I could import those files 1 at a time into WooCommerce, but wouldn’t it be nice if I could merge them first and then only import a single file? The unix command is simple – just navigate to the folder with all the csv files and…

WordPress Security Services

15 Best WordPress Support and Maintenance Services for 2023: Ensuring Your Website Stays in Top Shape

By The Mighty Mo! Design Co. | April 27, 2023

Small business owners and non-profit leaders know that keeping your website secure, fast, and fully-functional is critical to success.  Here’s the unspoken truth: You can either learn how to do all that tech maintenance and development stuff yourself, or hire someone else to do it. But let’s face it, doing it yourself isn’t always the…

RSS From Toby’s Blog

  • WordPress Maintenance Checklist: Keep Your Site Running Smoothly
    Discover the essential tasks for effective WordPress maintenance and ensure your website runs smoothly and securely with our comprehensive guide.
  • Why We Don’t Automate Our WordPress Hosting Business
    There are some great platforms out there to automate your website hosting biz: But we don’t use any of them. Here’s why: Hosting companies only get worse over time. Over the years, I’ve hosted websites on a bunch of platforms: All of these hosting companies share one thing in common: Over time, they all got…
  • Fortify Your WordPress Site: Essential Security Steps
    Securing your WordPress site is a critical component of maintaining your online presence and safeguarding your data. Security is no longer a luxury, it has become a necessity in today’s digital world, where threats are lurking at every corner. This piece dives deep into WordPress security basics, giving you a comprehensive understanding of common vulnerabilities…