Wordpress - How to get the path to the current theme?

I think you have to be a little careful because it depends on what you are trying to do.

If you are using a child theme get_template_directory(); will still go to the parent theme. However get_stylesheet_directory(); will go to the current theme, child or parent. Also, both these functions return absolute server paths.

If you wanted a fully formed URI, for links or images, you should use get_template_directory_uri(); or get_stylesheet_directory_uri(); using the correct one for the reasons stated.

Summary

  • get_stylesheet_directory(): file path to current Theme directory
  • get_stylesheet_directory_uri(): url path to current Theme directory
  • get_template_directory(): file path to parent Theme directory
  • get_template_directory_uri(): url path to parent Theme directory

get_stylesheet_directory_uri is what you want. it returns the URL of the current theme. get_stylesheet_directory will return the file path on the server.

For example:

<img src="<?php echo get_stylesheet_directory_uri(); ?>/assets/image.png" />

If you need the parent theme, get_template_directory and get_template_directory_uri are the equivalents.

If there is no parent theme then both will return the same value.

Further reading:

  • get_stylesheet_directory
    • absolute folder path of current theme
    • e.g. /var/www/yoursite/wp-content/themes/child_theme
  • get_template_directory
    • absolute folder path of parent theme
    • e.g. /var/www/yoursite/wp-content/themes/parent_theme
  • get_stylesheet_directory_uri
    • full URL of current theme
    • e.g. https://example.com/wp-content/themes/child_theme
  • get_template_directory_uri
    • full URL of parent theme
    • e.g. https://example.com/wp-content/themes/parent_theme