Wsparcie » Używanie i konfiguracja WordPressa » WP_Widget jest przestarzały od wersji 4.3.0
WP_Widget jest przestarzały od wersji 4.3.0
-
Witam! proszę o pomoc jak naprawić błąd, który wyrzuca mi po instalacji WP 4.3. Co konkretnie mam zrobić. Proszę o wykładnie dość łopatologiczną 😉
Strona ładuje się z tekstem:Notice: Wywołany konstruktor metody dla WP_Widget jest przestarzały od wersji 4.3.0! Zamiast z niego, skorzystaj z
__construct()
. in /home/xnskad5/public_html/wp-includes/functions.php on line 3457
a we wspomnianym pliku jest coś takiego:
if ( WP_DEBUG && apply_filters( 'deprecated_constructor_trigger_error', true ) ) { if ( function_exists( '__' ) ) { trigger_error( sprintf( __( 'The called constructor method for %1$s is <strong>deprecated</strong> since version %2$s! Use %3$s instead.' ), $class, $version, '<pre>__construct()</pre>' ) ); } else { trigger_error( sprintf( 'The called constructor method for %1$s is <strong>deprecated</strong> since version %2$s! Use %3$s instead.', $class, $version, '<pre>__construct()</pre>' ) ); } } }
-
Dołączam…po aktualizacji do WP 4.3 mam ten sam problem. Nie mogę też zalogować się do panelu admina
Najprostrzy sposób – przywróć poprzednią wersję WP. Wersja 4.3 jest „dość” świeża. to normalne że większość wtyczek nie jest jeszcze kompatybilna z nią… Trzeba poczekać na aktualizacje.
Szczerze wam powiem, że nie ma się co spieszyć nadto z aktualizowaniem WP bo potem takie kwiatki wychodzą. Poczekajcie spokojnie z miesiąc, albo np do momentu kiedy wyjdzie polska wersja – wtedy duża część wtyczek jest juz kompatybilna.
Jeśli nie macie zbyt wielu wtyczek na waszych WP to zanim zaktualizujecie, sprawdzcie czy dana wtyczka jest zgodna z nowym WP, a jezeli już „po ptakach” to poszukajcie podobnej wtyczki – zaktualizowanej.No tak tylko backupu nie mam :/
A z tego co czytałem na forach żeby zrobić downgrade to trzeba powyłączać wtyczki w panelu. W panelu do którego teraz nie da się zalogować. I koło się zamyka…jakaś rada?
zmieniłem w linijce 3455 z true na false
if ( WP_DEBUG && apply_filters( 'deprecated_constructor_trigger_error', false ) ) {
i działa.tak, jedna – pobierz wersję starszą wp, następnie wejdz w katalogi które masz na ftp, podmień plik wp-config (ten z ftp wrzuć do folderu, który sciągniesz na komputer – tego ze starszą wersją wp), a potem wszystkie pliki ze starym wp wrzuć na ftp (w ten sposób podmieniasz nowy na stary) – chyba w miare klarownie napisałam? Jesli nie, dopytaj, żebyś sobie większego bigosu nie narobił.
A w ogole przed przystąpieniem do pracy, pobierz sobie cały katalog ze stroną z ftp na komputer, żeby mieć w razie czego kopie zapasowąRzeczywiście zabłysnęli, że tak nagle się tego pozbyli. Już nagle 100% wtyczek się aktualizuje 😉
Osobiście mam ciekawsze zajęcia niż przeglądanie ponad 35 wtyczek, nawet przy pomocy AstroGrep’a. Szczególnie, że niecała połowa to starsze wtyczki, bo są lepsze.Stronę mam na trybie debugu do września, jako że jutro kończę finalne przełączenie, ale do września jeszcze „debugowanie z udziałem ludu”.
Dzięki skladowa.net za podpowiedź. Nie musiałem szukać sam 😀
skladowa.net dziękuję – faktycznie działa 🙂
Nie polecam zaproponowanego rozwiązania.
Za parę miesięcy okaże się, że zrobią ważną aktualizację PHP lub WordPress’a i kompletnie wycofają kompatybilność wsteczną z dotychczas używanym konstruktorem klas.
Wtedy natomiast posypią się funkcje w szablonach naprawianych w ten sposób.W przypadku problemu skladowa.net przestaną działać widgety w sidebarze oraz wszędzie indziej i będzie potrzebna pomoc w naprawie ponownie.
Jak poprawnie naprawić ten błąd?
Notice: Wywołany konstruktor metody dla WP_Widget jest przestarzały od wersji 4.3.0!
Zapraszam do lektury.- Wyszukujemy w logach debugowania nazwę klasy powodującej błąd (Jak: Debugging in WordPress)
- następnie najlepiej ściągnąć (lub rozpakować) folder z szablonem, którego używamy – ze strony przez FTP lub z posiadanej paczki z szablonem
- wyszukać nazwę problematycznej funkcji (nie zawsze jest to WP_Widget), np. wyszukiwaniem w systemie (z zaznaczoną opcją wyszukiwania w treści pliku). W moim przypadku (szablon Shoestrap3)
wp-content/themes/shoestrap-3/framework/bootstrap/includes/widgets.php
to folder w którym znajdował się plik - dalej postępujemy według instrukcji pod tym adresem. Poprawiony skrypt powyżej, stary pod spodem.
- Poniżej zamieszczam wycinek kodu, który poprawiałem w Shoestrap 3, na podstawie powyższej strony. W razie problemów czekam na wiadomość tutaj (subskrybuję ten temat).
Linijki z danymi, które trzeba przenieść do nowego skryptu, zaznaczyłem gwiazdką wraz z numerem. W ten sam sposób są zaznaczone miejsca w które należy te nazwy/opisy wstawić w poprawionym skrypcie.
Stary kod:
class Shoestrap_Vcard_Widget extends WP_Widget { private $fields = array( 'title' => 'Title ( optional )', 'street_address' => 'Street Address', 'locality' => 'City/Locality', 'region' => 'State/Region', 'postal_code' => 'Zipcode/Postal Code', 'tel' => 'Telephone', 'email' => 'Email' ); function __construct() { *1,2 $widget_ops = array( 'classname' => 'widget_shoestrap_vcard', 'description' => __( 'Use this widget to add a vCard', 'shoestrap' ) ); *3 $this->WP_Widget( 'widget_shoestrap_vcard', __( 'Shoestrap: vCard', 'shoestrap' ), $widget_ops ); $this->alt_option_name = 'widget_shoestrap_vcard'; add_action( 'save_post', array( &$this, 'flush_widget_cache' ) ); add_action( 'deleted_post', array( &$this, 'flush_widget_cache' ) ); add_action( 'switch_theme', array( &$this, 'flush_widget_cache' ) ); }
Poprawiony:
class Shoestrap_Vcard_Widget extends WP_Widget { private $fields = array( 'title' => 'Title ( optional )', 'street_address' => 'Street Address', 'locality' => 'City/Locality', 'region' => 'State/Region', 'postal_code' => 'Zipcode/Postal Code', 'tel' => 'Telephone', 'email' => 'Email' ); function __construct() { *. parent::__construct( *1 'widget_shoestrap_vcard', // Base ID *2 '__( "Shoestrap: vCard", "shoestrap" )', // Name *3 array( 'description' => __( 'Use this widget to add a vCard', 'shoestrap' ) ) // Args *. ); add_action( 'save_post', array( &$this, 'flush_widget_cache' ) ); add_action( 'deleted_post', array( &$this, 'flush_widget_cache' ) ); add_action( 'switch_theme', array( &$this, 'flush_widget_cache' ) ); }
Sim3k86 wiemy o tym, nikt nie pisze o problemach z samymi motywami. Nie widzi mi się poprawianie wtyczek z repozytorium WP (a mam ich nawet po 40 na stronie), szczególnie że trochę tych stron mam 😉
Witam! proszę o pomoc jak naprawić błąd, który wyrzuca mi po instalacji WP 4.3. Co konkretnie mam zrobić. Proszę o wykładnie dość łopatologiczną 😉
Autor tematu nie określił czy błąd powoduje wtyczka, czy motyw – prosił jedynie o pomoc i łopatologicznie napisane instrukcje.
W przypadku, gdy ktoś nie zajmuje się tym zawodowo i ma jedną stronę, której szablon ma już parę lat (a developer już go nie aktualizuje), to raczej może mu się przydać taka instrukcja „krok po kroku”.
A Tobie (albo na stronie klienta) jak kiedyś jeden ze starszych pluginów wysiądzie, bo WordPress wycofa koleją klasę/funkcję, to będziesz wiedział co i jak zmienić.
Nie ma to jak siedzieć godzinę i szukać poprawnego rozwiązania problemu, później jeszcze z pół godziny pisać konkretną instrukcję dla mniej doświadczonych użytkowników, tylko po to, żeby w pierwszej napisanej odpowiedzi (która i tak jest nie na temat) czytać o niezadowoleniu.
Sim3k86 wiemy o tym
– To, że Ty wiesz, nie znaczy, że inni też 😉
Instrukcja przeznaczona dla potrzebujących i chcących naprawić taki problem poprawnie.
Niech Ci będzie, przepraszam 🙂
Zapomniałem, że nie każdy czyta dzienniki zmian, szczególnie po dłuższym okresie nieaktualizowania, gdzie były takie instrukcje.
Sim3k86 – bardzo dziękuje za pomoc i doceniam Twój poświęcony czas!
Spróbuje zrobić tak jak napisałeś.
Czy mam rozumieć, że stale aktualizowane/rozwijane motywy nie mają takich problemów?skladowa.net – owszem, większość motywów i wtyczek aktualizowanych od czasu aktualizacji WP 4.3 wprowadziła poprawki. Starsze wtyczki i motywy z widgetami jednak niekoniecznie.
Można ten błąd łatwo ukryć, co nie zmienia faktu, że albo zatrudnii kogoś kto Ci to przekoduje albo wykonaj aktualizacje ew napisz do autora wtyczki/motywu
- Temat ‘WP_Widget jest przestarzały od wersji 4.3.0’ jest zamknięty na nowe odpowiedzi.