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 :)