Napraw Ostrzeżenie PHP: sizeof (): Parametr musi być tablicą lub obiektem, który implementuje się liczeniem
Napraw Ostrzeżenie PHP: sizeof (): Parametr musi być tablicą lub obiektem, który implementuje się liczeniem
Błąd PHP, który pojawia się w wielu WordPress Plugins które nie były aktualizowane od dłuższego czasu lub są niekompatybilne z nowszymi wersjami PHP. Ostrzeżenie PHP: sizeof(): Parametr musi być tablicą lub obiektem implementującym Countable.
treść
W naszym scenariuszu wystąpił błąd PHP w module Cross Sell Product Display dla WooCommerce.
FastCGI sent in stderr: "PHP message: PHP Warning: sizeof(): Parameter must be an array or an object that implements Countable in /web/path/public_html/wp-content/plugins/cross-sell-product-display-for-woocommerce/templates.php on line 18
De ce apare eroarea PHP Ostrzeżenie: sizeof(): Parametr musi być tablicą lub obiektem implementującym Countable ?
Problemem generującym ten błąd PHP jest funkcja sizeof() co w wersji PHP 7.2 lub nowszych może wygenerować ten błąd, jeśli podany parametr nie jest jeden array lub obiekt implementujący interfejs Countable.
Dlatego błąd często pojawia się po aktualizacji wersji PHP.
Jak rozwiązać błędy PHP generowane przez sizeof()?
Najprostszą metodą jest zastąpienie wywołania funkcji sizeof() z wywołaniem funkcji count().
W przypadku osób korzystających ze starszych wersji modułu Cross Sell Product Display, rozwiązanie jest proste. Zastąpione zostaną funkcje z linii 18 cali templates.php.
function cdxfreewoocross_get_cross_sell_products($product_id=false){
if($product_id ===false ){
if(!is_product()){return false;}
$product_id = (int)get_the_ID();
if($product_id=='0'){return false;}
}
$crosssells = get_post_meta( $product_id, '_crosssell_ids',true);
if ( sizeof($crosssells ) == 0 || $crosssells =='') { return false; }
return $crosssells;
}
Powyższy kod, w którym znajduje się sizeof() zostanie zastąpiony przez:
function cdxfreewoocross_get_cross_sell_products($product_id=false){
if($product_id ===false ){
if(!is_product()){return false;}
$product_id = (int)get_the_ID();
if($product_id=='0'){return false;}
}
$crosssells = get_post_meta( $product_id, '_crosssell_ids',true);
if ( !is_array( $crosssells ) || count( $crosssells ) == 0 || $crosssells =='') { return false; }
return $crosssells;
}
Ta modyfikacja najpierw sprawdza, czy $crosssells To jest array za pomocą funkcji is_array() i w przeciwnym razie powraca false.
- [Napraw PHP 7.2 / PHP 7.3] Ostrzeżenie PHP: użycie niezdefiniowanej stałej (spowoduje to błąd w przyszłej wersji PHP)
- Jak wyczyścić ogromne WP_OPTICS w SQL - Transients, WPSEO_SITEMAP _CACHE_VALIDator
- Napraw WC-Ajax = get_refreshed_fragments Wysokie użycie procesora (wyłącz fragmenty wózków Ajax)
- Jak dostosować stronę „Nie znaleziono żadnych produktów pasujących do twojego wyboru” w WooCommerce - optymalizacja sprzedaży w sklepach internetowych
- Jak wyczyścić ogromne WP_OPTICS w SQL - Transients, WPSEO_SITEMAP _CACHE_VALIDator
W takim przypadku $crosssells To jest array, funkcja jest używana count() aby określić liczbę elementów w array. Jeśli liczba elementów wynosi zero lub $crosssells jest pustym ciągiem znaków, zwracana jest wartość false.
Zostaw komentarz, jeśli są jakieś wyjaśnienia lub uzupełnienia do tego samouczka.
Napraw Ostrzeżenie PHP: sizeof (): Parametr musi być tablicą lub obiektem, który implementuje się liczeniem
Co nowego
O Stealth
Pasjonat technologii, z przyjemnością piszę na StealthSettings.com od 2006 roku. Mam bogate doświadczenie w systemach operacyjnych: macOS, Windows i Linux, a także w językach programowania i platformach blogowych (WordPress) oraz dla sklepów internetowych (WooCommerce, Magento, PrestaShop).
Zobacz wszystkie posty StealthMoże zainteresują Cię także...