$url = get_template_directory_uri() . '/img.jpg';
var_dump( $url );
string(ХХ) "http://mysite.ru/wp-content/themes/название_темы/img.jpg"
, где ХХ, ясное дело, количество символов в этой строке./path/to/your/site/wp-content/themes/название_темы/
. То есть, функция работает и возвращает корректное значение. Если картинка существует по этому пути, файл не битый, но все равно не отображается - это уже вопрос не к WordPress, надо искать причину где-то еще. Например, в CSS указано для картинки или контейнера height: 0. Или вообще display: none. Может javascript прячет (например, какой-нибудь lazyLoad). В общем, причины могут быть разные, но они не имеют никакого отношения к WP. Его функция работает корректно. <img src="<?php echo get_template_directory_uri(); ?>/img.jpg" width="300">