get_template_directory() против bloginfo( 'template_directory' ) против TEMPLATEPATH

15 нояб. 2012 г., 19:33:08
Просмотры: 29.5K
Голосов: 16

Я читал эту статью: Распространенные ошибки в разработке WordPress и как их исправить, и в ней автор говорит:

Получение расположения темы: Если вы используете TEMPLATEPATH или bloginfo( 'template_directory'). Прекратите! Вы должны использовать более полезную функцию get_template_directory(), как показано в моих примерах выше.

Но он не объясняет подробнее. Что такого плохого в bloginfo()?

0
Все ответы на вопрос 1
3
18

Короче говоря: 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().

15 нояб. 2012 г. 19:42:36
Комментарии

Единственное предостережение при разработке дочерних тем — вам нужно явно использовать get_stylesheet_directory(). Поправьте меня, если я ошибаюсь.

Steve Steve
15 нояб. 2012 г. 19:47:20

Спасибо! Просто интересно, почему в WP так много функций, которые просто вызывают другую функцию, и которые мы, по идее, не должны использовать...

coopersita coopersita
15 нояб. 2012 г. 21:07:12

В данном случае, я думаю, причина заключается просто в поддержании обратной совместимости с параметрами get_bloginfo().

Chip Bennett Chip Bennett
15 нояб. 2012 г. 21:20:29