Fix PHP BRĪDINĀJUMS: Izmērs (): parametram jābūt masīvam vai objektam, kas īsteno skaitāmu
Fix PHP BRĪDINĀJUMS: Izmērs (): parametram jābūt masīvam vai objektam, kas īsteno skaitāmu
PHP kļūda, kas parādās daudzos WordPress Plugins kas nav tikuši atjaunināti ilgu laiku vai nav saderīgi ar jaunākām PHP versijām. PHP brīdinājums: sizeof(): parametram ir jābūt masīvam vai objektam, kas ievieš Countable.
apmierināts
Mūsu scenārijā PHP kļūda radās modulī Cross Sell Product Display par 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
Dece apare eroarea PHP Brīdinājums: sizeof(): Parametram ir jābūt masīvam vai objektam, kas ievieš Countable?
Problēma, kas rada šo PHP kļūdu, ir funkcija sizeof() kas PHP 7.2 vai jaunākās versijās var ģenerēt šo kļūdu, ja norādītais parametrs nav viens array vai objekts, kas ievieš saskarni CountableApvidū
Tāpēc kļūda bieži parādās pēc PHP versijas atjaunināšanas.
Kā atrisināt PHP kļūdas, ko rada sizeof()?
Vienkāršākā metode ir aizstāt funkcijas izsaukumu sizeof() ar funkciju izsaukumu count()Apvidū
Tiem, kas izmanto vecās moduļa versijas Cross Sell Product Display, risinājums ir vienkāršs. Funkcijas no 18 collu līnijas tiks aizstātas templates.phpApvidū
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;
}
Iepriekš esošais kods, kurā ir sizeof(), tiks aizstāts ar:
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;
}
Šī modifikācija vispirms pārbauda, vai $crosssells Tas ir a array izmantojot funkciju is_array() un pretējā gadījumā atgriežas falseApvidū
- [Labot PHP 7.2 / PHP 7.3] PHP brīdinājums: nedefinētas konstantes izmantošana (tas radīs kļūdu nākamajā PHP versijā)
- Kā notīrīt milzīgas wp_options SQL — pārejas, wpseo_sitemap _cache_validator
- Labot wc-ajax = get_refreshed_fragments augsts CPU lietojums (atspējot AJAX groza fragmentus)
- Kā pielāgot WooCommerce lapu “Netika atrasts neviens produkts, kas atbilstu jūsu atlasei” — pārdošanas optimizēšana tiešsaistes veikalos
- Kā notīrīt milzīgas wp_options SQL — pārejas, wpseo_sitemap _cache_validator
Gadījumā, ja $crosssells Tas ir a array, funkcija tiek izmantota count() lai noteiktu elementu skaitu array. Ja elementu skaits ir nulle vai $crosssells ir tukša virkne, tiek atgriezta false.
Atstājiet komentārus, ja šajā apmācībā ir kādi precizējumi vai papildinājumi.
Fix PHP BRĪDINĀJUMS: Izmērs (): parametram jābūt masīvam vai objektam, kas īsteno skaitāmu
Kas jauns
Pret Stealth
Kaislīgs par tehnoloģijām, ar prieku rakstu vietnē StealthSettings.com kopš 2006. gada. Man ir plaša pieredze operētājsistēmās: macOS, Windows un Linux, kā arī programmēšanas valodās un blogošanas platformās (WordPress) un tiešsaistes veikalos (WooCommerce, Magento, PrestaShop).
Skatīt visas Stealth ziņasIespējams, jūs interesē arī...