Есть ли разница между the_title() и echo get_the_title()?

16 дек. 2015 г., 12:11:08
Просмотры: 20.7K
Голосов: 10

Просто небольшой вопрос. Есть ли какая-то разница в использовании

<?php the_title() ?>

или

<?= get_the_title() ?>

Да, я знаю, что кто-то может считать использование короткого тега echo плохой практикой, я просто хочу знать, есть ли какая-то разница в результате вызова этих двух функций.

2
Комментарии

почему короткий тег echo считается плохой практикой?

Joel M Joel M
29 июн. 2022 г. 18:38:05

короткий тег echo - это отличная практика, он убирает избыточный беспорядок из php end echo

th00ht th00ht
1 дек. 2022 г. 12:43:26
Все ответы на вопрос 2
2
12

Эти две функции не идентичны на 100%, хотя они очень похожи.

  1. the_title() по умолчанию выводит содержимое с помощью echo, но третий параметр может изменить это поведение.
  2. the_title() добавляет необязательные аргументы $before перед заголовком и $after после него. Если тема или плагин используют эти аргументы, вывод этих функций будет отличаться.

Если посмотреть исходный код, различия легко заметить:

32  /**
33   * Отображает или возвращает текущий заголовок записи с дополнительным содержимым.
34   *
35   * @since 0.71
36   *
37   * @param string $before Необязательно. Текст перед заголовком.
38   * @param string $after  Необязательно. Текст после заголовка.
39   * @param bool   $echo   Необязательно, по умолчанию true. Выводить или возвращать.
40   * @return string|void Строка, если параметр $echo равен false.
41   */
42  function the_title( $before = '', $after = '', $echo = true ) {
43          $title = get_the_title();
44  
45          if ( strlen($title) == 0 )
46                  return;
47  
48          $title = $before . $title . $after;
49  
50          if ( $echo )
51                  echo $title;
52          else
53                  return $title;
54  }

Видно, что the_title() получает данные с помощью get_the_title() в первой строке, поэтому на этом этапе функции идентичны. Но затем the_title() выполняет дополнительные манипуляции.

То же самое относится и к другим функциям с аналогичным поведением, таким как the_content() и get_the_content(). Хотя они похожи, но не полностью идентичны.

16 дек. 2015 г. 17:14:57
Комментарии

Таким образом, технически вызов "the_title('', '', false);" будет эквивалентен вызову "get_the_title();". Не то чтобы я хотел использовать его именно так. :)

Boykodev Boykodev
16 дек. 2015 г. 19:10:40

Да, это выглядит верно.

s_ha_dum s_ha_dum
16 дек. 2015 г. 19:15:12
3
the_title()

выводит заголовок и может использоваться только внутри 'цикла' https://codex.wordpress.org/Function_Reference/the_title

get_the_title()

без использования echo или <?= просто возвращает заголовок. Таким образом, вы можете сохранить его в переменной и при необходимости изменить https://codex.wordpress.org/Function_Reference/get_the_title

16 дек. 2015 г. 12:14:57
Комментарии

Значит, echo get_the_title() дает точно такой же результат, как и вызов the_title()?

Boykodev Boykodev
16 дек. 2015 г. 12:17:29

Да, это так. Пожалуйста, ознакомьтесь с приведенными выше ссылками для получения дополнительной информации из документации

TommyBs TommyBs
16 дек. 2015 г. 12:18:13

Так я и думал, просто хотел развеять некоторые сомнения.

Boykodev Boykodev
16 дек. 2015 г. 12:20:01