Je travaille actuellement avec PHP 7.2 et lorsque j'utilise get_the_content () ou get_the_excerpt () en dehors d'un modèle unique, dans le functions.php par exemple, le message d'avertissement suivant s'affiche:
Attention: count (): le paramètre doit être un tableau ou un objet implémentant Countable dans /Applications/MAMP/htdocs/wordpress/wp-kona/wp-includes/post-template.php à la ligne 284
Qu'est ce qui ne va pas avec ça? Est-ce un bug principal de wordpress? Est-ce que je manque quelque chose?.
À partir de la version 5.2, cela ne sera plus un problème. get_the_content()
et wp_trim_excerpt()
obtiennent un nouveau paramètre facultatif (troisième et deuxième respectivement) de $post
afin que vous puissiez l'utiliser en dehors de la boucle, en l'alignant sur la fonctionnalité de toutes les autres fonctions get_the_*
. Cela n'a pris que 16 ans ... Référence sur Trac
Si quelqu'un se heurte à ce problème, la solution consiste à extraire the_content du méta-champ et l'exécuter via le filtre the_content comme suit:
apply_filters('the_content', get_post_field('post_content', $post->id));
J'ai fait une courte vidéo expliquant le tout si vous attendez jusqu'à la section TLDR ... https://www.youtube.com/watch?v=vMguTNzFoUk
Ce bogue est lié au bogue principal de WordPress https://core.trac.wordpress.org/ticket/42814
Le plus souvent, cela se produit lorsque vous appelez la fonction get_the_excerpt
ou get_the_content
en dehors de la boucle, à condition que l'extrait ou le contenu soit vide.
Donc, pour résoudre le problème vous-même, vous devez rechercher le lieu de l'erreur et vérifier manuellement les extraits/contenus existants.
Par exemple:
if(has_excerpt($post_id)) {
$meta[] = sprintf('<meta name="description" content="%s">',
get_the_excerpt($post_id)
);
}
Oui, je connaissais déjà la cause de ce que vous vivez:
get_the_content
ou get_the_excerpt
renverrait l'erreur suivante: nombre (pages)Cela dit, la variable globale pages est définie sur null, l'appel du nombre (pages) déclenche cette erreur car une valeur null ne peut pas être comptée.
Pour résoudre ce problème, un simple appel indique facilement que vous appelez get_the_content
ou get_the_excerpt
en dehors de la boucle.
Vous devez donc configurer correctement les données de publication avant utilisation, pour que la boucle soit conçue:
while (have_post (): the_post ()): // get_the_content () ou get_the_excerpt () fonctionnera correctement maintenant. the_content (); prendra fin;