Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [PHP]Ucinanie wpisów
Forrest
post 14.10.2012, 17:44:11
Post #1





Grupa: Zarejestrowani
Postów: 3
Pomógł: 0
Dołączył: 13.10.2012

Ostrzeżenie: (0%)
-----


Witam,

Mam problem z php w moim Wordpressie, w związku z powyższym pozwoliłem sobie zadać pytanie. Chodzi o ucinanie wpisów na stronie głównej. Automatycznie dzieje się to poprzez [...] i następuje po 55 słowach. Na ukazywanie się wpisu na stronie głównej nie ma w ogóle znaczenia opcja More w edycji danego posta.
Wpis w php wygląda następująco:
  1. /**
  2.  * Overrides default excerpt handling so we have more control
  3.  *
  4.  * @since 1.2.4
  5.  */
  6. remove_filter('get_the_excerpt', 'wp_trim_excerpt');
  7. add_filter('get_the_excerpt', 'improved_trim_excerpt');
  8. function improved_trim_excerpt($text) {
  9.  
  10. // Set allowed excerpt tags
  11. $allowed_tags = (pagelines_option('excerpt_tags')) ? pagelines_option('excerpt_tags') : '<p><br><a>';
  12.  
  13. $raw_excerpt = $text;
  14. if ( '' == $text ) {
  15. $text = get_the_content('');
  16.  
  17. $text = strip_shortcodes( $text );
  18.  
  19.  
  20. $text = apply_filters('the_content', $text);
  21.  
  22. $text = preg_replace('@<script[^>]*?>.*?</script>@si', '', $text); // PageLines - Strip JS
  23.  
  24. $text = str_replace(']]>', ']]&gt;', $text);
  25.  
  26. $text = strip_tags($text, $allowed_tags); // PageLines - allow more tags
  27.  
  28. $excerpt_length = apply_filters('excerpt_length', 55);
  29. $excerpt_more = apply_filters('excerpt_more', ' ' . '[...]');
  30. $words = preg_split("/[\n\r\t ]+/", $text, $excerpt_length + 1, PREG_SPLIT_NO_EMPTY);
  31. if ( count($words) > $excerpt_length ) {
  32. array_pop($words);
  33. $text = implode(' ', $words);
  34. $text = $text . $excerpt_more;
  35. } else {
  36. $text = implode(' ', $words);
  37. }
  38. }
  39. return apply_filters('wp_trim_excerpt', $text, $raw_excerpt);
  40. }


W czym jest problem? Mianowicie po wejściu w dany temat (post) zostaje ucięty akapit, w którym jest [...]. Moja strona na której można sprawdzić o co chodzi jest dostępna tutaj (wystarczy wejść w pierwszy lepszy post oprócz pierwszy, który jest testowy i zbyt krótki).

Oczywiście mogę powiększyć liczbę w tym wersie
  1. $excerpt_length = apply_filters('excerpt_length', 55)

do na 30 000 słów, niemniej wtedy nie wiem dlaczego dublują mi się posty, tzn. po wejściu w dany post jest on widoczny zdublowany, ale w edycji post nie widać podwójnego posta tylko pojedynczy (czyli niby dobrze). Sprawdzić to można w temacie tym temacie na mojej stronie. Pierwszy akapit jest zdublowany, ale ja tej pierwszej wersji w edycji nie widzę i nie mogę nic zmienić.

Co powinienem w kodzie zmienić, aby nie ucinało mi tekstu w taki sposób, że znika reszta akapitu w temacie. Wolałbym, aby ucinało mi widok w głownym w takim miejscu w jakim ja chce - czyli po użyciu funkcji "More" w edycji tematu.

Za pomoc z góry dziękuję.
Go to the top of the page
+Quote Post
memory
post 14.10.2012, 18:10:24
Post #2





Grupa: Zarejestrowani
Postów: 616
Pomógł: 84
Dołączył: 29.11.2006
Skąd: bełchatów

Ostrzeżenie: (0%)
-----


usuń to add_filter('get_the_excerpt', 'improved_trim_excerpt'); i powinno śmiagać

Ten post edytował memory 14.10.2012, 18:10:38
Go to the top of the page
+Quote Post
Forrest
post 14.10.2012, 18:16:55
Post #3





Grupa: Zarejestrowani
Postów: 3
Pomógł: 0
Dołączył: 13.10.2012

Ostrzeżenie: (0%)
-----


Po wycięciu powyższego wersu brak w ogóle na stronie fragmentów wpisów . Widoczne są tylko tematy posta i "Czytaj dalej...". Tak więc to nie to.

Wolałbym - jeśli jest taka możliwość - aby na stronie były wyświetlane fragmentu konkretnego wpisu, które to ja będę tworzył poprzez użycie taga "more".

Ten post edytował Forrest 14.10.2012, 19:19:29
Go to the top of the page
+Quote Post
memory
post 14.10.2012, 19:21:34
Post #4





Grupa: Zarejestrowani
Postów: 616
Pomógł: 84
Dołączył: 29.11.2006
Skąd: bełchatów

Ostrzeżenie: (0%)
-----


sorki usuń
  1. remove_filter('get_the_excerpt', 'wp_trim_excerpt');
  2.  
  3. add_filter('get_the_excerpt', 'improved_trim_excerpt');


jak nie zadziała to spróbuj dodać
  1. add_filter('get_the_excerpt', 'wp_trim_excerpt');


Ten post edytował memory 14.10.2012, 19:22:44
Go to the top of the page
+Quote Post
Forrest
post 14.10.2012, 19:43:09
Post #5





Grupa: Zarejestrowani
Postów: 3
Pomógł: 0
Dołączył: 13.10.2012

Ostrzeżenie: (0%)
-----


Problem udało mi się rozwiązać z poziomu szablonu. Przepraszam za zawracanie gitary. Już mówię jak.

Korzystam z szablonu Platform. W ustawieniach w PageLineSetting->Blog Ang Posts->Post Excerpt or Summary Handling odznaczamy Single Post Pages, ale zaznaczamy Posts/Blog Page.

Teraz już nie ma powtarzania, ale cały czas ucina tekst. W związku z powyższym w wersie podanym w pierwszym poście zamiast 55 zrobiłem 30000. Niestety każdy wpis, który mam na blogu muszę poprawiam ręcznie poprzez dodanie More tam gdzie chce, ale jest ok smile.gif

Może komuś się przyda rozwiązanie. Chyba ten temat mogłem zamieścić tutaj - Forum: Systemy portalowe i CMS y prawda ?

Pozostaje mały problem - dlaczego nie ma możliwości pojawienia się edycji tekstu w tych "fragmentach" z widoku strony głównej (brak pogrubień, podkreśleń, kursywy).
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
1 Użytkowników czyta ten temat (1 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Wersja Lo-Fi Aktualny czas: 31.07.2025 - 07:45