Avoid native php functions
- They are not relative, so breaking stuff is easy. (like in the OPs case)
- Why role your own if core got a function for you?
- They don’t consider edge cases
You should NEVER use the constants
STYLESHEET_DIRECTORY
TEMPLATE_DIRECTORY
WP_PLUGIN_DIR
- etc…
Remember: Those are not API! and can therefore change!
but INSTEAD USE the following API functions:
- Parent Theme:
get_template_directory()
/get_template_directory_uri()
- Child Theme:
get_stylesheet_directory()
/get_stylesheet_directory_uri()
You can use both in Plugins and Themes:
plugin_dir_path(__FILE__).'/your/path/to/file.ext
*) for Themes alsoplugin_dir_url( __FILE__ ).'/your/path/to/file.ext
but plugin_dir_url()
is reserved only for Plugins.
Keep in mind…
That there’re
- Plugins
- MU-Plugins
- Drop-Ins
- Themes
- Themes in directories registered via
register_theme_directory( $dir );
So please stick with the native API functions like wp_upload_dir();
, content_url();
, etc.
In general: Take a look at /wp-includes/link-template.php
for a whole bunch of nice path and URl related API functions.