Prawidłowy sposób wstawiania tytułów do atrybutów alt i title w motywach WordPressa

Bardzo często w motywach autorzy wypełniają atrybuty title i alt, wykorzystując do tego funkcje the_title() lub get_the_title(). Przykładowy kod wygląda wówczas tak:

<a href="#" title="<?php the_title(); ?>"> <?php the_title(); ?> </a>

lub tak

the_post_thumbnail( 'thumbnail', array( 'alt' => get_the_title(), 'title' => "" ) );

Powyższe dwa sposoby NIE SĄ BEZPIECZNE, ponieważ w tytule mogą znaleźć się znaczniki HTML lub znaki specjalne, które mogą spowodować błędne wyświetlanie strony.

Aby się zabezpieczyć, moglibyśmy tytuł zamknąć w funkcję esc_attr() np. tak:

<a href="#" title="<?php echo esc_attr( get_the_title() ); ?>"> <?php the_title();?> </a>

To rozwiązanie jest jak najbardziej akceptowalne, ale można to zrobić jeszcze lepiej :)

Funkcja the_title_attribute()

Jedną z rzeczy, jaką lubię w WordPressie jest mnogość dostępnych funkcji :) Nie inaczej jest i tym razem, ponieważ możemy skorzystać z gotowej funkcji the_title_attribute().

Zwraca ona tytuł wpisu, z którego zostały usunięte wszystkie znaczniki HTML (strip_tags), a wszystkie znaki specjalne są zamieniane na kody (za pomocą esc_attr()). Tak przygotowany ciąg, można bezpiecznie wstawić do znaczników alt i title.

Do funkcji można przekazać (jako string lub jako tablicę) następujące parametry:

  • $before – tekst do wstawienia przed tytułem
  • $after – tekst do wstawienia po tytule
  • $echo – wyświetla tytuł (TRUE) lub tylko go zwraca (FALSE).

Prawidłowy kod, z naszego przykładu, będzie więc wyglądał następująco:

 <a href="#" title="<?php the_title_attribute(); ?>"><?php the_title(); ?></a>

Prosto, elegancko i bezpiecznie :)

Dodaj komentarz

Twój adres e-mail nie zostanie opublikowany. Wymagane pola są oznaczone *