Corriger l'avertissement PHP : sizeof() : le paramètre doit être un tableau ou un objet implémentant Countable
Corriger l'avertissement PHP : sizeof() : le paramètre doit être un tableau ou un objet implémentant Countable
O erreur PHP qui apparaît dans beaucoup WordPress Plugins qui n'ont pas été mises à jour depuis longtemps ou sont incompatibles avec les versions plus récentes de PHP. Avertissement PHP : sizeof() : le paramètre doit être un tableau ou un objet qui implémente Countable.
contenu
Dans notre scénario, l'erreur PHP s'est produite dans un module Cross Sell Product Display pour 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 Attention : sizeof() : Le paramètre doit être un tableau ou un objet qui implémente Countable ?
Le problème qui génère cette erreur PHP est la fonction sizeof() qui dans la version de PHP 7.2 ou versions ultérieures, peut générer cette erreur, si le paramètre donné n'en est pas un array ou un objet qui implémente l'interface Countable.
Par conséquent, l’erreur apparaît souvent après une mise à jour de la version PHP.
Comment résoudre les erreurs PHP générées par sizeof()?
La méthode la plus simple consiste à remplacer l'appel de fonction sizeof() avec un appel de fonction count().
Dans le cas de ceux qui utilisent d'anciennes versions du module Cross Sell Product Display, la solution est simple. Les fonctions de la gamme 18 pouces seront remplacées 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;
}
Le code ci-dessus où se trouve sizeof() sera remplacé par :
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;
}
Cette modification vérifie d'abord si $crosssells C'est un array en utilisant la fonction is_array() et, sinon, renvoie false.
- [Fix PHP 7.2 / PHP 7.3] Avertissement PHP : Utilisation d'une constante non définie (cela générera une erreur dans une future version de PHP)
- Comment nettoyer les énormes WP_Options dans SQL - Transients, WPSEO_SITEMAP _CACHE_VALIDATOR
- Fix WC-AJAX = GET_REFRESHED_FRAGMENTS Utilisation élevée du processeur (Désactiver les fragments de panier ajax)
- Comment personnaliser la page "Aucun produit n'a été trouvé correspondant à votre sélection" dans WooCommerce - Optimisation des ventes dans les magasins en ligne
- Comment nettoyer les énormes WP_Options dans SQL - Transients, WPSEO_SITEMAP _CACHE_VALIDATOR
Dans le cas où $crosssells C'est un array, la fonction est utilisée count() pour déterminer le nombre d'éléments dans array. Si le nombre d'éléments est nul ou $crosssells est une chaîne vide, false est renvoyé.
Laissez des commentaires s'il y a des précisions ou des ajouts à ce tutoriel.
Corriger l'avertissement PHP : sizeof() : le paramètre doit être un tableau ou un objet implémentant Countable
Quoi de neuf
À propos Stealth
Passionné de technologie, j'écris avec plaisir sur StealthSettings.com depuis l'année 2006. J'ai une vaste expérience des systèmes d'exploitation : macOS, Windows et Linux, ainsi que des langages de programmation et des plateformes de blogging (WordPress) et pour les boutiques en ligne (WooCommerce, Magento, PrestaShop).
Voir tous les messages de StealthVous pourriez également être intéressé par...