Fix PHP -Warnung: sizeof (): Parameter muss ein Array oder ein Objekt sein, das zählbare implementiert
Fix PHP -Warnung: sizeof (): Parameter muss ein Array oder ein Objekt sein, das zählbare implementiert
O eroare PHP care apare in multe WordPress Plugins ce nu au mai fost actualizate de mult timp sau sunt incompatibile cu versiunile mai noi de PHP. PHP Warning: sizeof(): Parameter must be an array or an object that implements Countable.
Inhalt
In scenariul nostru, eroarea PHP a aparut la un modulul Cross Sell Product Display pentru 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 Warning: sizeof(): Parameter must be an array or an object that implements Countable ?
Problema care genereaza aceasta eroare PHP, este functia sizeof() care in versiunea de PHP 7.2 sau versiuni ulterioare, poate genera aceasta eroare, daca parametrul dat nu este un array sau un obiect care implementeaza interfata Countable.
Asadar, eroarea apare de multe ori dupa o actualizare a versiunii PHP.
Cum rezolvi erorile PHP generate de sizeof()?
Cea mai simpla metoda este sa se inlocuiasca apelul la functia sizeof() cu o apelare la funcția count().
In cazul celor care folosesc versiunile vechi ale modulului Cross Sell Product Display, rezolvarea este simpla. Se vor inlocui functiile de la linia 18 in 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;
}
Codul de mai sus in care este sizeof() va fi inlocuit cu:
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;
}
Modificarea aceasta verifica mai intai daca $crosssells Es ist ein array folosind functia is_array() si, in caz contrar, returneaza false.
- [Fix PHP 7.2 / PHP 7.3] PHP Warning: Use of undefined constant (this will throw an Error in a future version of PHP)
- So reinigen Sie riesige wp_options in SQL - Transienten, wpseo_sitemap _cache_validator
- Fix WC-Ajax = get_refreshed_fragmente hohe CPU-Verwendung (AJAX CART-Fragmente deaktivieren)
- So passen Sie die Seite an "Es wurden keine Produkte gefunden, die Ihre Auswahl entsprechen" in WooCommerce - Optimierung der Verkäufe in Online -Stores
- So reinigen Sie riesige wp_options in SQL - Transienten, wpseo_sitemap _cache_validator
In cazul In care $crosssells Es ist ein array, se foloseste functia count() pentru a determina numarul de elemente din array. Dacă numarul de elemente este zero sau $crosssells este un sir vid, se returneaza false.
Lasati comentarii daca sunt de facut clarificari sau completari la acest tutorial.
Fix PHP -Warnung: sizeof (): Parameter muss ein Array oder ein Objekt sein, das zählbare implementiert
Was ist neu
Um Stealth
Technologiebegeistert schreibe ich seit 2006 gerne auf StealthSettings.com. Ich habe umfangreiche Erfahrungen mit Betriebssystemen wie macOS, Windows und Linux sowie mit Programmiersprachen, Blogging-Plattformen (WordPress) und Online-Shops (WooCommerce, Magento, PrestaShop).
Alle Beiträge von Stealth anzeigenVielleicht interessieren Sie sich auch für...