get_permalink în WordPress

Interogări și bucla WordPress 1.0

get_permalink() întoarce adresa permanentă a unui articol sau a unei pagini; the_permalink() o afișează escapată.

Sintaxă
get_permalink( int|WP_Post $post = 0, bool $leavename = false ): string|false
the_permalink( int|WP_Post $post = 0 )

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 în href fă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 &#038;.
  • get_posts: Întoarce un tablou de articole după aceleași argumente ca WP_Query, fără să atingă bucla principală.