nappy Opublikowano 31 Maja 2010 Zgłoś Opublikowano 31 Maja 2010 Założenia: WP standardowo wypluwa tak: <p> jakis tam tekst przed 'more'<span id="more-29"></span>jakis tam tekst po more</p> a chciałbym, żeby wypluwał tak: <p> jakis tam tekst przed 'more'</p><span id="more-29"></span><p class="post-more">jakis tam tekst po more</p> Czyli jak widać chciałbym, aby to co znajduje się po <!-- more --> szło z automatu w nowy paragraf. Da się to zrobić modyfikując pliki Wp ale tego chciałbym uniknąć (potrzebne to do theme'a który będzie publicznie dostępny). Gdyby ktos byl ciekaw po co mi to: chce z jquery chowac ten fragment i wyswietlac sliderem po kliknieciu w link (da sie wygenerowac calosc na stronie glownej a nie tylko w single-post view). plz help :) Cytuj Udostępnij tę odpowiedź Odnośnik do odpowiedzi Udostępnij na innych stronach Więcej opcji udostępniania...
nappy Opublikowano 10 Czerwca 2010 Zgłoś Opublikowano 10 Czerwca 2010 Ok rozwiązałem swój problem, poniżej kod dla potomnych. Może komuś się przyda. Całość wrzucamy do pliku functions.php w głównym katalogu naszego theme'a. (wp includuje ten plik automatycznie). Co to robi? Dzieli nam tekst (cały, bez tagów <p>,<span> itp - czysty tekst) na 2 części. Pierwsza (excerpt) wyświetla fragment tekstu od początku do (domyślnie) 600 znaku. Skrypt wyszukuje pierwszą kropke/wykrzyknik/znak zapytania/średnik i dopiero po nim ucina tekst. Więc problem ucinania słowa/zdania w środku odpada. Plusy wiadome, możemy osobno wywoływać/formatować wstęp/tekst, działać na nim z jQuery, nie ma żadnych tagów-śmieci z WP. Wywołanie: show_post(); // wyświetli wstęp, domyślnie 600 znakówshow_post(content, 666); // wyświetli część tekstu zaczynając od 666 znaku. Więc jeśli chcemy wyświetlić cały tekst w ciągu od np 700 znaku to wpisujemy: show_post(excerpt, 700); //pierwszy parametr nie jest wymaganyshow_post(content, 700); //wyświetli reszte tekstu function cut_off($lookfor, $lenght) { global $more; $more = 1; $whole_content = get_the_content(); $cutoff_pos = strpos($whole_content, $lookfor, $lenght); return $cutoff_pos; } function show_post($select = "excerpt", $excerpt_lenght = "600") { global $more; $more = 1; $whole_content = get_the_content(); $whole_content_lenght = strlen($whole_content); if ($excerpt_lenght<$whole_content_lenght) { $punctation[0] = cut_off('.',"$excerpt_lenght"); $punctation[1] = cut_off('!',"$excerpt_lenght"); $punctation[2] = cut_off('?',"$excerpt_lenght"); $punctation[3] = cut_off(';',"$excerpt_lenght"); $i = 0; foreach($punctation as $pointer) { if(empty($pointer) === FALSE) { $true[$i] = $pointer; } $i++; } $nearest_pointer = min($true); $nearest_pointer = $nearest_pointer+1; $text[excerpt] = substr($whole_content, 0, $nearest_pointer); $text[content] = substr($whole_content, $nearest_pointer); echo $text[$select]; } else { echo "$whole_content"; } } enjoy! :) Cytuj Udostępnij tę odpowiedź Odnośnik do odpowiedzi Udostępnij na innych stronach Więcej opcji udostępniania...