Ce face get_permalink
get_permalink() construiește adresa publică a unui conținut după structura aleasă în Setări → Legături permanente (de exemplu https://exemplu.ro/meniu-de-toamna/). Primește un ID sau un obiect, implicit articolul curent, și funcționează pentru articole, pagini, atașamente și tipuri personalizate.
the_permalink() (din WordPress 1.2) afișează adresa articolului curent: o trece prin filtrul the_permalink și apoi prin esc_url(), deci e sigură direct în href. Parametrul $post la the_permalink() există din WordPress 4.4.
get_permalink() NU escapează rezultatul: când îl pui în HTML folosește esc_url( get_permalink( $id ) ). Cu $leavename = true primești adresa cu marcajul %postname% în loc de slug (folosit intern de editor).
Parametri
| Parametru | Descriere |
|---|---|
$post |
ID-ul sau obiectul articolului. Implicit articolul global $post. |
$leavename |
get_permalink(): dacă păstrează marcajul pentru numele articolului/paginii în loc de slug. Implicit false. |
Ce returnează
get_permalink(): adresa ca șir, sau false dacă articolul nu există. the_permalink() afișează adresa și nu întoarce nimic.
Exemple
Exemplul 1: Link către articol în buclă
the_permalink() escapează deja adresa, deci nu mai e nevoie de esc_url().
<?php while ( have_posts() ) : the_post(); ?>
<a class="citeste" href="<?php the_permalink(); ?>">Citește articolul</a>
<?php endwhile; ?>
Ce afișează pagina
<a class="citeste" href="https://exemplu.ro/meniu-de-toamna/">Citește articolul</a>
Exemplul 2: Adresa unei pagini după ID, din terminal
Verifici rapid ce adresă are pagina cu ID 64 (structura de legături: „Numele articolului”).
wp eval 'echo get_permalink( 64 );'
Ieșire în terminal
https://exemplu.ro/contact/
Exemplul 3: Link escapat în afara buclei
Cu get_permalink() escapezi tu adresa; verifici și false, pentru cazul în care pagina a fost ștearsă.
<?php
$url = get_permalink( 64 );
if ( $url ) {
echo '<a href="' . esc_url( $url ) . '">Scrie-ne</a>';
}
Ce afișează pagina
<a href="https://exemplu.ro/contact/">Scrie-ne</a>
Greșeli frecvente
- Scrii
echo get_permalink()direct înhreffărăesc_url(). - Nu verifici rezultatul: pentru un ID inexistent funcția întoarce
false, iar linkul iese gol. - Te miri că adresele arată ca
?p=42: structura legăturilor permanente este „Simplu”. Alege alta în Setări → Legături permanente.
Comenzi înrudite
get_the_title: get_the_title() întoarce titlul unui articol; the_title() îl afișează direct în buclă, cu text opțional înainte și după.have_posts / the_post: Bucla WordPress (The Loop): have_posts() verifică dacă mai sunt articole, the_post() îl pregătește pe următorul.esc_url: Curăță o adresă pentru afișare în href sau src: respinge protocoalele nepermise și codifică & ca &.get_posts: Întoarce un tablou de articole după aceleași argumente ca WP_Query, fără să atingă bucla principală.