snow flakes
home icon
owl eyes

posted on
4.03.2010
by Owl

2

Podmiana funkcji the_content() i the_excerpt()

Tak dla treningu zaprojektowałem skórke pod CMS Wordpress. Głównym założeniem było zbudowanie czystej i wyluzowanej strony dla nieistniejącej firmy którą nazwałem MASS. Zaprojektałem logo, wybrałem kolory a zdjęcia ściągłem z serwisu Flickr. Jest to mój trzeci projekt pod Wordpressa i cały czas się uczę obsługi PHP pod kątem CMS. Za każdym razem kiedy tworze staram się wykożystać nowe zasoby z których wcześniej nie kożytałem i tak było w tym przypadku.

Na stronie w kategorii “WORK” chciałem najzwyczajeniej zrobić liste zdjęć i obok fragmenty tekstu danego postu za pomocą standardowej funkcji the_excerpt().

Cała zabawa zaczyna się kiedy podłączyłem pod tą liste funkcję jQuery slideDown która miałaby pokazywać reszte tekstu w odzielnym DIVie na tej samej stronie – bez przeładowania. I tu pojawia się problem ponieważ funkcja Wordpress the_content() owszem pokazuje tekst ale w całości i efektem byłby powtórzony nagłówek z dwóch funkcji the_excerpt() oraz z the_content().

Pewnie istnieje na to wiele innych rozwiązań ale to jest jedyne na które wpadłem ponieważ dopiero zaczynam zabawe z PHP to nie miałem za dużo podobnych pomysłów.

Rozwiązanie jest takie żeby napisać odzielnie funkcje które zastąpią te z WordPress.

Oto kod:

<?php 
function my_excerpt() {
$zawartosc = get_the_content();
$wyciag = explode('<*>', $zawartosc);
$work_excerpt=$wyciag[0];
$work_excerpt=apply_filters('the_content', $work_excerpt);
echo $work_excerpt;
}
 
function my_content() {
$zawartosc = get_the_content();
$wyciag = explode('<*>', $zawartosc);
$work_content=$wyciag[1];
$work_content=apply_filters('the_content', $work_content);
echo $work_content;
}
?>

A oto małe wyjaśnienie dla funkcji my_excerpt:

//tworze funkcje my_excerpt
function my_excerpt() {
 
//pobieram zawartość postu z funkcji get_the_content
//do ciągu $zawartość
$zawartosc = get_the_content();
 
//za pomoca explode podzielilem $zawartosc 
//na dwie części i zapisałem w tablicy $wyciag
$wyciag = explode('<*>', $zawartosc);
 
//pobieram pierwszą część tablicy
$work_excerpt=$wyciag[0];
 
//nadaje jej formatowanie znaczników HTML przez WP
$work_excerpt=apply_filters('the_content', $work_excerpt);
 
//pokazuje pierwszy fragment postu
echo $work_excerpt;

I dokładnie tak samo utworzyłem funkcje my_content tylko zmieniłem fragment tablicy na ‘[1]‘ w której znajduje się reszta postu:

$work_content=$wyciag[1];

Aby skrypt zaczął działać należy podczas pisania postu wstawić ten znaczek ‘<*>‘. Pokazuje on funkcji w którym miejscu ma odzielić od siebie fragmenty tekstu. Można go zastąpić czymś innym ale ponieważ nie wyobrażam sobie żebym miał kiedyś napisać jakiś post używając takiej ‘świeczki’ postanowiłem że z tego właśnie skorzystam.

Jeśli chcesz użyć moich funkcji wystarczy że skopiujesz powyższy kod (ten bez opisów) do pliku function.php (znajduje się w katalogu ../THEMES/TWOJA SKÓRKA/) i zamiast the_excerpt i the_content użyjesz my_excerpt i my_content.

DEMO

Tagged with: , . Posted in: Tutorials, Web design
Comments:
  • hi, new to the site, thanks.

    Janismini
    posted on
    28.02.2011 02:43
  • Ciekawy tips.. : ) no i całkiem przyjemny szablon..

    Na marginesie spytam czemu footer tak tu skacze po najechaniu na button prev?

    Rafał
    posted on
    20.06.2010 16:16
Leave a comment

your e-mail will not be published. Name and e-mail requierd.