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

27 июн. 2014 г., 14:36:33
Просмотры: 39.5K
Голосов: 15

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

0
Все ответы на вопрос 3
5
23

the_permalink выводит постоянную ссылку текущей записи на фронтенд.

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

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

echo get_permalink();

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

function the_permalink() {
    echo esc_url( apply_filters( 'the_permalink', get_permalink() ) );
}
27 июн. 2014 г. 14:48:33
Комментарии

Это означает, что все функции, такие как the_ID() и get_ID(), имеют аналогичные различия. Простите, но я новичок в WordPress, поэтому спрашиваю.

AliasgerSW AliasgerSW
27 июн. 2014 г. 14:52:44

@AliasgerSW это общая схема, есть некоторые исключения, но в основном это так.

Nicolai Grossherr Nicolai Grossherr
27 июн. 2014 г. 15:07:11

@AliasgerSW если сомневаетесь, посмотрите код. QueryPosts — отличный сайт для поиска исходного кода функций WordPress.

shea shea
4 июл. 2014 г. 01:22:25

@AliasgerSW это сделал наш собственный @Rarst

shea shea
4 июл. 2014 г. 09:05:04

@shea QueryPosts больше не поддерживается. :-(

I am the Most Stupid Person I am the Most Stupid Person
8 авг. 2019 г. 15:32:16
2

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

27 июн. 2014 г. 14:51:40
Комментарии

это может быть простым способом взглянуть на проблему, но не самым полным

Nicolai Grossherr Nicolai Grossherr
27 июн. 2014 г. 15:05:20

Безусловно, ответ @Tom J Nowell♦ гораздо более лаконичен. Намного лучше и хорошо объяснён :-)

Matt Royal Matt Royal
27 июн. 2014 г. 16:29:47
1
-1

the_permalink() используется в циклах записей, аналогично the_title(). Подробнее о циклах можно прочитать в The Loop.

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

Например:

echo get_permalink( 1 );

Так будет выведена постоянная ссылка текущей страницы:

echo get_permalink();
27 июн. 2014 г. 14:59:41
Комментарии

на самом деле это не требует ID вне цикла

Nicolai Grossherr Nicolai Grossherr
27 июн. 2014 г. 15:04:43