« count(): Argument #1 ($value) must be of type Countable|array » sous PHP 8

Fiche du décodeur d'erreurs, mise à jour le 12 octobre 2026

BloquantCompatibilité PHP 8
Le message affiché
Fatal error: Uncaught TypeError: count(): Argument #1 ($value) must be of type Countable|array, null given
Autres formulations du même message 5
  • PHP Fatal error: Uncaught TypeError: count(): Argument #1 ($value) must be of type Countable|array, string given
  • Fatal error: Uncaught TypeError: count(): Argument #1 ($value) must be of type Countable|array, bool given
  • Fatal error: Uncaught TypeError: count(): Argument #1 ($value) must be of type Countable|array, false given
  • Fatal error: Uncaught TypeError: sizeof(): Argument #1 ($value) must be of type Countable|array, null given
  • Warning: count(): Parameter must be an array or an object that implements Countable

La fonction count() compte les éléments d’une liste (un tableau, dans le jargon PHP). Depuis PHP 8.0, lui donner autre chose, une valeur vide (null), false ou un simple texte, provoque une erreur fatale. PHP 7.2 à 7.4 se contentait d’un avertissement « Parameter must be an array… », et beaucoup de codes anciens n’ont jamais été corrigés.

Pourquoi cette erreur apparaît

  • Un champ personnalisé vide (ACF, répéteur, galerie) renvoie false ou null, et un modèle du thème le passe directement à count().
  • Une extension compte les éléments d’un réglage qui n’a jamais été enregistré : WordPress renvoie alors false au lieu d’une liste.
  • Le code a été écrit à l’époque de PHP 7, qui tolérait ce cas avec un simple avertissement.
  • Une donnée importée ou migrée est stockée sous forme de texte alors que le code attend une liste.

Comment corriger le problème

Repérer le fichier et ce qu’il a reçu

Le chemin qui suit « in », avec le numéro placé après les deux-points, désigne le fichier exact. Dans wp-content/themes, c’est votre thème ou thème enfant ; dans wp-content/plugins, l’extension du même nom. La fin du message, « null given », « bool given » ou « string given », dit ce que le code a reçu à la place d’une liste.

Installer les mises à jour disponibles

Une version récente corrige souvent ce défaut : mettez à jour l’extension ou le thème concerné, puis rechargez la page. Si l’administration est inaccessible, renommez le dossier de l’extension par FTP, puis ouvrez la page Extensions : WordPress la désactive. Redonnez ensuite son nom au dossier, mettez l’extension à jour, puis réactivez-la.

Compléter la donnée manquante

Quand l’erreur ne touche qu’une page, ouvrez-la dans l’éditeur et vérifiez les champs personnalisés ou la galerie qu’elle utilise : un champ resté vide suffit parfois à déclencher le plantage. Pour une extension, enregistrer une fois sa page de réglages crée souvent l’option qui manquait.

Protéger l’appel à count()

Dans votre thème enfant ou votre code maison, vérifiez que la valeur peut être comptée avant de la compter : la fonction is_countable(), disponible depuis PHP 7.3, fait exactement ce test. Pour une extension tierce, transmettez plutôt le message complet à son éditeur, car une retouche manuelle disparaîtrait à la mise à jour suivante.

$membres = get_field( 'membres' );

// Avant : if ( count( $membres ) > 0 ) {
if ( is_countable( $membres ) && count( $membres ) > 0 ) {
	// affichage de la liste
}

Faites une copie du thème et de l’extension concernés avant toute modification, et travaillez dans un thème enfant pour ne pas perdre vos corrections.

Un autre message d'erreur ? Collez-le dans le décodeur : il le reconnaît et vous oriente vers la bonne fiche.

Ouvrir le décodeur