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
plugin_dir_path(__FILE__).'/your/path/to/file.ext *) for Themes also
plugin_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.