get_template_directory() против bloginfo( 'template_directory' ) против TEMPLATEPATH
Я читал эту статью: Распространенные ошибки в разработке WordPress и как их исправить, и в ней автор говорит:
Получение расположения темы: Если вы используете TEMPLATEPATH или bloginfo( 'template_directory'). Прекратите! Вы должны использовать более полезную функцию get_template_directory(), как показано в моих примерах выше.
Но он не объясняет подробнее. Что такого плохого в bloginfo()?
Короче говоря: get_bloginfo( 'template_directory' ) и get_bloginfo( 'template_url' ) просто возвращают get_template_directory_uri().
Таким образом, вы можете сократить этот второй вызов, обратившись напрямую к последнему тегу шаблона.
См. исходный код для get_bloginfo().
Несколько других:
'url'=>home_url()'wpurl'=>site_url()'stylesheet_url'=>get_stylesheet_uri()'stylesheet_directory'=>get_stylesheet_directory_uri()'locale'=>get_locale()
Редактирование
Также обратите внимание: TEMPLATEPATH и STYLESHEETPATH планируется устареть, поэтому лучше просто заменить их сейчас на get_template_directory() и get_stylesheet_directory() соответственно.
Редактирование 2
Относительно этого комментария:
Как раз то, что я хотел сказать :). Добавлю, что
get_template_directory()возвращает путь, аget_template_directory_uri()— URL. Так что автор не последователен:get_bloginfo( 'template_directory' )иget_template_directory()возвращают разные вещи!
Смотрите исходный код :)
case 'template_directory':
case 'template_url':
$output = get_template_directory_uri();
break;
Относительно этого комментария:
Единственное предостережение: при разработке дочерних тем вам нужно явно использовать
get_stylesheet_directory(). Поправьте меня, если я ошибаюсь.
Верно, но так было всегда. get_bloginfo() не возвращает ничего связанного с get_stylesheet_directory(). Он возвращает только get_stylesheet_uri() и get_stylesheet_directory_uri().
Единственное предостережение при разработке дочерних тем — вам нужно явно использовать get_stylesheet_directory(). Поправьте меня, если я ошибаюсь.
Steve
Спасибо! Просто интересно, почему в WP так много функций, которые просто вызывают другую функцию, и которые мы, по идее, не должны использовать...
coopersita