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.
콘텐츠
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 그것은 a입니다 array folosind functia is_array() si, in caz contrar, returneaza false.
- [PHP 7.2 / PHP 7.3 수정] PHP 경고 : 정의되지 않은 상수 사용 (미래 버전의 PHP에서 오류가 발생합니다)
- SQL에서 거대한 wp_options를 청소하는 방법 - 과도, wpseo_sitemap _cache_validator
- 수정 WC-Ajax = get_refreshed_fragments 높은 CPU 사용법 (AJAX 카트 조각 비활성화)
- WooCommerce - 온라인 상점 판매 최적화에서 "선택 사항과 일치하는 제품을 찾을 수 없습니다" 페이지를 사용자 정의하는 방법
- SQL에서 거대한 wp_options를 청소하는 방법 - 과도, wpseo_sitemap _cache_validator
In cazul In care $crosssells 그것은 a입니다 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.
php 경고 수정 : sizeof () : 매개 변수는 배열이거나 countable을 구현하는 객체 여야합니다.
에 대한 Stealth
기술에 열정을 가진 저는 2006년부터 StealthSettings.com에 즐겁게 글을 쓰고 있습니다. 저는 macOS, Windows, Linux 운영 체제뿐만 아니라 프로그래밍 언어와 블로그 플랫폼(WordPress), 온라인 상점(WooCommerce, Magento, PrestaShop)에서도 풍부한 경험을 가지고 있습니다.
Stealth의 모든 게시물 보기당신은 또한에 관심이있을 수 있습니다 ...