Jaka jest różnica między get_post_permalink a get_permalink?


11

Przeczytałem dokumentację get_post_permalink()i get_permalink()nie rozumiem różnicy między nimi. Być może dlatego, że nie rozumiem celu $leavenamei $sampleparametrów. Czy ktoś może to wyjaśnić, a kiedy jedna funkcja byłaby bardziej przydatna od drugiej? Dzięki!

Odpowiedzi:


6

Funkcja get_post_permalink()pobiera link do postu w zależności od jego „stałego” linku oraz niestandardowych reguł przepisywania, które zmieniają ?p=123się w np my-beautiful-sunday-diary. Ta get_permalink()funkcja jest bardziej „podstawowa”, ale także bardziej wszechstronna pod względem działania: na post_typeprzykład

  • page, to używa get_page_link()
  • attachment, to używa get_attachment_link()
  • post, to używa get_post_link()

Obsługuje również wyświetlanie bezpośrednich termlinków typu „s” categoryi „data”. Na koniec albo zastępuje „ładny” link w twoim, home_url()albo po prostu zwraca nieprzetworzony link, jeśli nie zostały przypisane żadne niestandardowe reguły przepisywania. Wreszcie dołącza ogólny filtr:

/**
 * Filters the permalink for a post.
 *
 * Only applies to posts with post_type of 'post'.
 *
 * @since 1.5.0
 *
 * @param string  $permalink The post's permalink.
 * @param WP_Post $post      The post in question.
 * @param bool    $leavename Whether to keep the post name.
 */
return apply_filters( 'post_link', $permalink, $post, $leavename );

Mam nadzieję, że to wyjaśnia temat.

Protip: Jeśli trzeba zmienić peramlinks w plugin, iść z filtrów specyficznych wewnątrz get_attachment_link(), get_post_link()itp Tylko jeśli są albo pracy na jednym miejscu i nie zamierzają dystrybuować swój kod lub jeśli piszesz wtyczkę targetting tylko przepisać , a następnie skorzystaj z powyższego filtru ogólnego. W przeciwnym razie zniszczysz wszystkie wysiłki autorów tematów i rozpoczniesz wyścig z priorytetem oddzwaniania.


2

Ktoś inny z pewnością wyjaśni mi lepiej niż ja. Jak tylko używamget_permalink()

Są w większości podobne, ponieważ oba zwracają bezpośredni link do posta, get_permalinkużywają get_post_permalink(dla post_types) i mogą być filtrowane. Będzie również używany do pobierania linku do strony, załącznika ... gdzie get_post_permalinkwydaje się być poświęcony typom post.

EDYTOWAĆ:

Jeśli chodzi o użycie $leavename, wygląda na to, że nie ma potrzeby używania frontonu (a nawet back-endu), ponieważ zwraca on ślimak permastruktury, zgodnie z typem postu łącza.

 echo get_permalink(123, true);

Zwraca schemat przepisywania dla łącza, którego można użyć

Post:

 http://example.com/%postname%/

Produkt:

 http://example.com/%product%/

$ leavename jest używany w get_permalink () w tablicy $ rewritecode i zapisywany jako pierwszy parametr w linii funkcyjnej 221

$permalink = home_url( str_replace($rewritecode, $rewritereplace, $permalink) );

Przydatne może być odkrycie przepisanego ślimaka linku dla programisty (ale myślę, że jest lepszy sposób na zrobienie tego)

Mam nadzieję, że ktoś poda więcej szczegółów.


Dzięki! Wciąż jednak nie jestem do końca pewien. Czy kiedykolwiek używałeś $ leavename do zmiany struktury permalink? Dlaczego i jak to zrobić? Czy masz na myśli, że get_post_permalink () służy do pobierania archiwów, czy masz na myśli tam get_permalink ()? Nigdy nie widziałem użycia get_post_permalink () do dzisiaj, kiedy natknąłem się na to, że jest używane dokładnie tak samo jak get_permalink (), więc nie mam jasności co do różnicy.
Michelle,

Mówię o get_permalink, masz go w źródle, pobiera on stronę autora, kategorie itp. To zrobi więcej niż get_post_permalink. Get_permalink to funkcja szablonu, jeśli się nie mylę i jest potężna.
Benoti,

Rozumiem, po prostu nie rozumiem, kiedy kiedykolwiek potrzebujemy lub chcemy użyć get_post_permalink () - czy możesz podać przykład kodu? A czy wiesz, co robią $ leavename i $ sample? Używałem również tylko get_permalink () :-)
Michelle,

2
$leavenamejest używany w admin, aby uzyskać strukturę permalink, dzięki czemu może wygenerować interfejs, który pozwala edytować ślimak posta.
Milo,
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.