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

16

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

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

Но он не уточняет. Что в этом плохого bloginfo()?

coopersita
источник

Ответы:

17

Чтобы сделать длинную историю короткой: 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

Re: этот комментарий

Как раз то, что я собирался сказать :). Я бы добавил, что 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;

Re: этот комментарий:

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

Правда, но так было всегда. get_bloginfo()не возвращает ничего связанного с get_stylesheet_directory(). Это только возвращает get_stylesheet_uri()и get_stylesheet_directory_uri().

Чип Беннетт
источник
Единственное предостережение при разработке дочерних тем - вам нужно явно использовать get_stylesheet_directory (). Кто-то поправит меня, если я ошибаюсь.
Стив
Благодарность! Мне просто интересно, почему в WP так много таких функций, которые просто вызывают другую функцию, что мы тогда должны не использовать ...
coopersita
В этом случае, я думаю, что причина в том, чтобы просто поддерживать обратную совместимость с get_bloginfo()параметрами.
Чип Беннетт