25 Cze

“Read more” w WordPress

Kategoria O wszystkim i o niczym

Podczas modyfikacji skórki natknąłem się na mały problem związany z wyświetlaniem treści na stronie głównej. WordPress posiada funkcję the_content(), która posiada możliwoć “ucinania” reszty wpisu za tagiem <!–more–>, gdzie pojawia się odnośnik z napisem “read more” czyli “czytaj więcej”. Napis można modyfikować jednym z parametrów, ale co gdy chcemy przenieść odnośnik gdzieś poza akapit? Trywialnie można to zrobić tak:

<a href="<? the_permalink() ?>">więcej</a>

Link będzie jednak widoczny nawet gdy nic już więcej nie ma. Żeby to rozwiązać musiałem się wgłębić w kod WordPress, ponieważ nigdzie nie mogłem znaleźć na to pytanie odpowiedzi. Wywnioskowałem, że jedyne wyjście to dopisanie własnej funkcji. Po podejrzeniu get_the_content() wychodzi następująca funkcja:

function get_more() {
global $more, $page, $pages;
if ( $page > count($pages) )
$page = count($pages);
$content = $pages[$page-1];
if ( preg_match(’/<!–more(.*?)?–>/’, $content, $matches) )
$content = explode($matches[0], $content, 2);
else
$content = array($content);
if ( count($content) > 1 ) return true;
return false;
}

Można ją umieścić w functions.php naszej skórki albo dopisać do wp-includes/post-template.php. Teraz można dodać warunek:

<?php if(get_more()) : ?>
<a href="<?php the_permalink() ?>">więcej</a>
<?php endif; ?>

I wszystko działa jak należy. Mam nadzieję, że się komuś przyda. Dziwne jest tylko to, że takiej funkcji nie ma standardowo w WordPress.

Dodaj komentarz



Bad Behavior has blocked 2 access attempts in the last 7 days.