I want to check for an appropriate template in the theme folder before falling back to the file in my plugin directory. Hereâs my code:
add_filter('template_include', 'sermon_template_include'); function sermon_template_include($template) { if(get_query_var('post_type') == 'wpfc_sermon') { if ( is_archive() || is_search() ) : if(file_exists(TEMPLATEDIR . '/archive-wpfc_sermon.php')) return TEMPLATEDIR . '/archive-wpfc_sermon.php'; return dirname(__FILE__) . '/views/archive-wpfc_sermon.php'; else : if(file_exists(TEMPLATEDIR . '/single-wpfc_sermon.php')) return TEMPLATEDIR . '/single-wpfc_sermon.php'; return dirname(__FILE__) . '/views/single-wpfc_sermon.php'; endif; } return $template; }
Problem is, it doesnât work! 🙂 It always picks the file in my plugin folder. Any idea what to do? Iâve tried alot of variations but I canât seem to get anything to work!
Thanks in advance!
Jack
EDIT
I’m expecting the archive-wpfc_sermon.php to be returned from the theme folder if it exists. However, the file from my plugin always gets returned. Thanks for your help! This is from my Sermon Manager plugin available in the repository.
So, I’m not sure exactly what is causing the problem, but you might try the following:
dirname(__FILE__)
withplugin_dir_path( __FILE__ )
TEMPLATEDIR
withget_stylesheet_directory()
It’s possible that the problem comes from referencing the constants directly.
I am not sure if this will work for you but it is worth a shot. I use this all the time for my custom post types when they require a special template.
All you have to do is add this script in your functions.php file and put the template file in your theme directory.
This could be worth a shot and may not cause conflict with your plugin. However I am not sure of that.
I forgot … dont forget to add the action. 🙂