Wsparcie » Motywy » Po aktualizacji do 5.5 WP zmieniło się formatowanie strony

  • Rozwiązany WJJ

    (@wjj)


    Przed aktualizacją widoczna naklejka [Etnopark] wyrównana „alignleft” przesunęłaby się przed ostatnie słowo akapitu „niespodzianki.”
    Obecnie zawsze jest to traktowane jakby przed naklejką był </br>.
    obecnie jest wpisane:
    by nie zgadła niespodzianki.[caption id="" align="alignleft" width="110" caption="Etnopark"]...[/caption]Erynia
    a poprawnie przygotowany dawny wpis powinien wyglądać tak:
    by nie zgadła niespodzianki.[caption id="" align="alignleft" width="110" caption="Etnopark"]...[/caption]</br>Erynia
    Na {zbadaj} przeglądarki wygląda jakby tekst zawsze był wstawiany w paragraf <p></p>, a wcześniej tego nie było.
    W motywie nic się nie zmieniło – jest stary i nieaktualizowany z zewnątrz (sam muszę o niego dbać) więc powodem musi być WordPress.
    W którym miejscu może on dostawiać znaczniki paragrafu (nieproszony) i jak to można zlikwidować?
    Wie może ktoś?

    Strona przy której potrzebuję pomocy: [zaloguj się aby zobaczyć ten link]

Viewing 6 replies - 1 through 6 (of 6 total)
  • Miałem kiedyś podobny problem i wtedy pomógł mi taki zaczep filtra:

     function czystespalanie__filter__fix_shortcodes($content) {
    
         return strtr($content, [
             '<p>[' => '[',
             ']</p>' => ']',
             ']<br />' => ']'
         ]);
    
     }
    
     remove_filter('the_content', 'wpautop' );
     remove_filter('the_content', 'do_shortcode' );
    
     add_filter('the_content', 'wpautop', 100);
     add_filter('the_content', 'czystespalanie__filter__fix_shortcodes', 105);
     add_filter('the_content' , 'do_shortcode', 110);
    

    Filter usuwa z treści wpisu łamanie lini i paragrafy, z przed nawiasu, i po nawiasach kwadratowych czyli tych stanowiących znacznik shortcode.

    Wklej to w takiej kolejności jak jest, nie przestawiając zaczepów.
    Oczywiście do pliku functions.php

    Której functions.php?
    Wstawienie do „tej z tematu” poskutkowało komunikatem:

    W witrynie wystąpił błąd krytyczny.
    Dowiedz się więcej o debugowaniu WordPressa.

    Może wstawiłem w złe miejsce (albo w zły plik 😉 )

    Po wstawieniu „w ten z /public_html/wp-includes/” brak różnicy
    i może znów wstawiłem w złe miejsce (albo w zły plik 😉 ).

    Może jednak dałoby się poprawić zmiany pomiędzy 5.4 a 5.5 w tej kwestii?!

    Może wstawiłem w złe miejsce (albo w zły plik 😉 )

    Zawsze do pliku w twoim motywie (aktualnie używanym – aktywnym).
    wp-content/themes/twoj-motyw/functions.php

    Może jednak dałoby się poprawić zmiany pomiędzy 5.4 a 5.5 w tej kwestii?!

    Dało by się, ale takimi rzeczami zajmuje się zespół programistów od WordPressa.
    Poza tym, większość błędów spowodowanych jest przez źle zakodowany motyw albo przeze wtyczkę.
    A jeżeli pojawi się jakiś błąd w źródłach, to i tak musisz czekać na jego poprawienie, bo i tak, podczas aktualizacji zmiany jakie byś wprowadził ulegną nadpisaniu.

    Ale to nie znaczy, że w żaden sposób nie możesz pomóc.
    Jeżeli znalazłeś jakiś błąd, możesz go zgłosić na tej stronie:
    https://make.wordpress.org/core/handbook/testing/reporting-bugs/

    Na dzień dzisiejszy, wystarczy, że wstawisz te filtry, które Ci podałem wyżej i łamanie wierszy powinno zniknąć.

    Użycie zaczepów to jedyny zalecany sposób na tzw modyfikowanie WordPressa bez działania na jego kod źródłowy.

    Jeżeli się nie poprawi to standardowo, albo powyłączaj wszystkie wtyczki i zmień motyw na domyślny, albo poczekaj na aktualizację poprawiającą błędy.

    Niestety, w funkcjach motywu – nie działa (patrz komunikat). Może dlatego, że functions.php ma strukturę:

    <?php
    [...]
    ?>

    A propos „takimi rzeczami zajmuje się…” obawiam się, że nie da się tego zrobić bo ktoś wpadł na pomysł żeby ułatwić życie selfikowcom i stworzył Gutenberga. Raz próbowałem i usłyszałem, że „odchodzi się od tego typu struktur” więc to nie byłby według „nich” błąd lecz świadome działanie mające na celu… (według mnie niszczenie zgodności w dół).
    Ciekawe jednak, która funkcja w którym pliku odpowiada za wstawiane znaczników akapitu.
    W każdym razie dziękuję za sugestie.

    Sprawdź jeszcze tak, zamieniając tamtą tablice ma taką;

    return strtr($content, [
             '<p>[' => '[',
             ']</p>' => ']',
             ']<br />' => ']',
             ']<br/>' => ']',
             ']<br>' => ']',
         ]);
    

    A potem jeszcze usuwając parametry cyfrowe z zaczepów czyli 100, 105 i 110, nie zapominając o usunięciu również przecinka je poprzedzającego czyli coś takiego:

    add_filter('the_content', 'czystespalanie__filter__fix_shortcodes' );

    I sprawdź tez ma motywie domyślnym, czyli którymś z serii twenty… wystarczy ze sprawdzisz na podglądanie (zmiana na inny motyw czasami powoduje zmianę ustawień niektórych widżetów i potem trzeba ustawiać je ponownie).

    Ciekawe jednak, która funkcja w którym pliku odpowiada za wstawiane znaczników akapitu.

    Wspomniana przeze mnie wyżej funkcja wpautop jest zaczepem filtra do tej funkcji. Z ang action hook filter.

    Może dlatego, że functions.php ma strukturę:

    Kazdy plik php, który nie jest jednocześnie jakimś szablonem HTML rozppczyna się deklaracją <?php inaczej kod w nich zawarty nie zostałby wykonany a potraktowany jako ciąg znaków (string).

    więc to nie byłby według „nich” błąd lecz świadome działanie mające na celu…

    Wszystko jest ok. Musisz tylko zaznajomić sie z WordPressem i z jego kodem, i przynajmniej jakieś podstawy z PHP.

    Wyśmienicie, ale musiałem jeszcze trochę pomieszać.

    • musiałem zmienić tablicę na
      return strtr($content, [
               '<p>' => '',
               '</p>' => '',
           ]);

      bo inaczej nie działało – paragraf może być otwierany również bez ‚[‚

    • wykasowałem wszystkie remove_filter i add_filter z poprzedniej informacji,
      oprócz

       add_filter('the_content', 'czystespalanie__filter__fix_shortcodes' );
      

    Bardzo dziękuję za pomoc. Mam nadzieję, że nie rozpieprzyło się co innego.
    Na razie jeszcze raz dziękuję i oznaczam jako rozwiązane.
    PS. mam co prawda książkę „PHP i MySQL” ale niewiele mi pomogła, czy znasz jakąś inną której mógłbym użyć do zapoznania się ze specyfiką PHP w WordPressie.

Viewing 6 replies - 1 through 6 (of 6 total)