Разница между функциями the_permalink () и get_permalink ()

9

В WordPress я использую обе функции the_permalink()и get_permalink()функции, но я не могу получить никакой разницы в выводе обеих функций. В чем разница между обеими функциями?

AliasgerSW
источник

Ответы:

16

the_permalink Отобразить постоянную ссылку текущего сообщения на веб-интерфейс.

get_permalinkоднако возвращает его как переменную, но не выводит его. Вы также можете передать ему идентификатор сообщения, если хотите получить постоянную ссылку на другое сообщение.

the_permalink эквивалентно:

echo get_permalink();

Что очень близко к тому, что он на самом деле делает. Это реализация the_permalink:

function the_permalink() {
    echo esc_url( apply_filters( 'the_permalink', get_permalink() ) );
}
Том Дж Новелл
источник
3
Это означает, что все функции, такие как the_ID () и get_ID (), также имеют такие же различия, как это. Извините, но я новичок в WordPress, поэтому спрашиваю
AliasgerSW
@AliasgerSW это шаблон, есть некоторые исключения, но в целом это так
Николай
@AliasgerSW, если сомневаетесь, посмотрите на код. QueryPosts - отличный сайт для поиска исходного кода функций WordPress.
Ши
@ AliasgerSW это сделано наша собственная @Rarst
ши
@shea QueryPosts удален. : - (\
Я самый глупый человек
3

Если вы посмотрите на кодекс WordPress, то увидите, что get_permalink()он используется вне цикла. the_permalink()для использования в цикле. Это самый простой способ посмотреть на это.

Мэтт Роял
источник
может быть, простой способ взглянуть на это, но не очень полный
Николай
Конечно, @Tom J Nowell ♦ ответ гораздо более лаконичен. Намного лучше и хорошо объяснено :-)
Matt Royal
-1

the_permalink()используется в сообщениях петли, как the_title(). Узнайте больше о петлях в The Loop .

get_permalink()можно использовать в петлях или вне петель. В циклах функция возвращает (не отображает) текущую постоянную ссылку. Но за пределами цикла требуется идентификатор сообщения.

Например:

echo get_permalink( 1 );

Это отобразит постоянную ссылку текущей страницы:

echo get_permalink();
Ehsaan
источник
1
на самом деле это не требует идентификации вне цикла
Николай